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*);
1244#define value_expr(node) value_expr_gen(p, (node))
1245static NODE *void_stmts(struct parser_params*,NODE*);
1246static void reduce_nodes(struct parser_params*,NODE**);
1247static void block_dup_check(struct parser_params*,NODE*,NODE*);
1249static NODE *block_append(struct parser_params*,NODE*,NODE*);
1250static NODE *list_append(struct parser_params*,NODE*,NODE*);
1251static NODE *list_concat(NODE*,NODE*);
1252static NODE *arg_append(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1253static NODE *last_arg_append(struct parser_params *p, NODE *args, NODE *last_arg, const YYLTYPE *loc);
1254static NODE *rest_arg_append(struct parser_params *p, NODE *args, NODE *rest_arg, const YYLTYPE *loc);
1255static NODE *literal_concat(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1256static NODE *new_evstr(struct parser_params*,NODE*,const YYLTYPE*);
1257static NODE *new_dstr(struct parser_params*,NODE*,const YYLTYPE*);
1258static NODE *str2dstr(struct parser_params*,NODE*);
1259static NODE *evstr2dstr(struct parser_params*,NODE*);
1260static NODE *splat_array(NODE*);
1261static void mark_lvar_used(struct parser_params *p, NODE *rhs);
1263static NODE *call_bin_op(struct parser_params*,NODE*,ID,NODE*,const YYLTYPE*,const YYLTYPE*);
1264static NODE *call_uni_op(struct parser_params*,NODE*,ID,const YYLTYPE*,const YYLTYPE*);
1265static NODE *new_qcall(struct parser_params* p, ID atype, NODE *recv, ID mid, NODE *args, const YYLTYPE *op_loc, const YYLTYPE *loc);
1266static 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);
1267static 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;}
1269static bool args_info_empty_p(struct rb_args_info *args);
1270static 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*);
1271static rb_node_args_t *new_args_tail(struct parser_params*,rb_node_kw_arg_t*,ID,ID,const YYLTYPE*);
1272static NODE *new_array_pattern(struct parser_params *p, NODE *constant, NODE *pre_arg, NODE *aryptn, const YYLTYPE *loc);
1273static NODE *new_array_pattern_tail(struct parser_params *p, NODE *pre_args, int has_rest, NODE *rest_arg, NODE *post_args, const YYLTYPE *loc);
1274static NODE *new_find_pattern(struct parser_params *p, NODE *constant, NODE *fndptn, const YYLTYPE *loc);
1275static NODE *new_find_pattern_tail(struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg, const YYLTYPE *loc);
1276static NODE *new_hash_pattern(struct parser_params *p, NODE *constant, NODE *hshptn, const YYLTYPE *loc);
1277static NODE *new_hash_pattern_tail(struct parser_params *p, NODE *kw_args, ID kw_rest_arg, const YYLTYPE *loc);
1279static rb_node_kw_arg_t *new_kw_arg(struct parser_params *p, NODE *k, const YYLTYPE *loc);
1280static rb_node_args_t *args_with_numbered(struct parser_params*,rb_node_args_t*,int);
1282static VALUE negate_lit(struct parser_params*, VALUE);
1283static NODE *ret_args(struct parser_params*,NODE*);
1284static NODE *arg_blk_pass(NODE*,rb_node_block_pass_t*);
1285static NODE *new_yield(struct parser_params*,NODE*,const YYLTYPE*);
1286static NODE *dsym_node(struct parser_params*,NODE*,const YYLTYPE*);
1288static NODE *gettable(struct parser_params*,ID,const YYLTYPE*);
1289static NODE *assignable(struct parser_params*,ID,NODE*,const YYLTYPE*);
1291static NODE *aryset(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1292static NODE *attrset(struct parser_params*,NODE*,ID,ID,const YYLTYPE*);
1294static void rb_backref_error(struct parser_params*,NODE*);
1295static NODE *node_assign(struct parser_params*,NODE*,NODE*,struct lex_context,const YYLTYPE*);
1297static NODE *new_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
1298static NODE *new_ary_op_assign(struct parser_params *p, NODE *ary, NODE *args, ID op, NODE *rhs, const YYLTYPE *args_loc, const YYLTYPE *loc);
1299static NODE *new_attr_op_assign(struct parser_params *p, NODE *lhs, ID atype, ID attr, ID op, NODE *rhs, const YYLTYPE *loc);
1300static NODE *new_const_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
1301static NODE *new_bodystmt(struct parser_params *p, NODE *head, NODE *rescue, NODE *rescue_else, NODE *ensure, const YYLTYPE *loc);
1303static NODE *const_decl(struct parser_params *p, NODE* path, const YYLTYPE *loc);
1305static rb_node_opt_arg_t *opt_arg_append(rb_node_opt_arg_t*, rb_node_opt_arg_t*);
1306static rb_node_kw_arg_t *kwd_append(rb_node_kw_arg_t*, rb_node_kw_arg_t*);
1308static NODE *new_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
1309static NODE *new_unique_key_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
1311static NODE *new_defined(struct parser_params *p, NODE *expr, const YYLTYPE *loc);
1313static NODE *new_regexp(struct parser_params *, NODE *, int, const YYLTYPE *);
1315#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
1317static NODE *new_xstring(struct parser_params *, NODE *, const YYLTYPE *loc);
1319static NODE *symbol_append(struct parser_params *p, NODE *symbols, NODE *symbol);
1321static NODE *match_op(struct parser_params*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
1323static rb_ast_id_table_t *local_tbl(struct parser_params*);
1325static VALUE reg_compile(struct parser_params*, VALUE, int);
1326static void reg_fragment_setenc(struct parser_params*, VALUE, int);
1327static int reg_fragment_check(struct parser_params*, VALUE, int);
1329static int literal_concat0(struct parser_params *p, VALUE head, VALUE tail);
1330static NODE *heredoc_dedent(struct parser_params*,NODE*);
1332static void check_literal_when(struct parser_params *p, NODE *args, const YYLTYPE *loc);
1334#define get_id(id) (id)
1335#define get_value(val) (val)
1336#define get_num(num) (num)
1339static inline int ripper_is_node_yylval(struct parser_params *p, VALUE n);
1342ripper_new_yylval(struct parser_params *p, ID a, VALUE b, VALUE c)
1344 if (ripper_is_node_yylval(p, c)) c = RNODE_RIPPER(c)->nd_cval;
1345 add_mark_object(p, b);
1346 add_mark_object(p, c);
1347 return NEW_RIPPER(a, b, c, &NULL_LOC);
1351ripper_new_yylval2(struct parser_params *p, VALUE a, VALUE b, VALUE c)
1353 add_mark_object(p, a);
1354 add_mark_object(p, b);
1355 add_mark_object(p, c);
1356 return NEW_RIPPER_VALUES(a, b, c, &NULL_LOC);
1360ripper_is_node_yylval(struct parser_params *p, VALUE n)
1362 return RB_TYPE_P(n, T_NODE) && nd_type_p(RNODE(n), NODE_RIPPER);
1365#define value_expr(node) ((void)(node))
1366#define remove_begin(node) (node)
1367#define void_stmts(p,x) (x)
1368#undef rb_dvar_defined
1369#define rb_dvar_defined(id, base) 0
1370#undef rb_local_defined
1371#define rb_local_defined(id, base) 0
1372#define get_id(id) ripper_get_id(id)
1373#define get_value(val) ripper_get_value(val)
1374#define get_num(num) (int)get_id(num)
1375static VALUE assignable(struct parser_params*,VALUE);
1376static int id_is_var(struct parser_params *p, ID id);
1378#define method_cond(p,node,loc) (node)
1379#define call_bin_op(p, recv,id,arg1,op_loc,loc) dispatch3(binary, (recv), STATIC_ID2SYM(id), (arg1))
1380#define match_op(p,node1,node2,op_loc,loc) call_bin_op(0, (node1), idEqTilde, (node2), op_loc, loc)
1381#define call_uni_op(p, recv,id,op_loc,loc) dispatch2(unary, STATIC_ID2SYM(id), (recv))
1382#define logop(p,id,node1,node2,op_loc,loc) call_bin_op(0, (node1), (id), (node2), op_loc, loc)
1384#define new_nil(loc) Qnil
1386static VALUE new_regexp(struct parser_params *, VALUE, VALUE, const YYLTYPE *);
1388static VALUE const_decl(struct parser_params *p, VALUE path);
1390static VALUE var_field(struct parser_params *p, VALUE a);
1391static VALUE assign_error(struct parser_params *p, const char *mesg, VALUE a);
1393static VALUE parser_reg_compile(struct parser_params*, VALUE, int, VALUE *);
1395static VALUE backref_error(struct parser_params*, NODE *, VALUE);
1398RUBY_SYMBOL_EXPORT_BEGIN
1399VALUE rb_parser_reg_compile(struct parser_params* p, VALUE str, int options);
1400int rb_reg_fragment_setenc(struct parser_params*, VALUE, int);
1401enum lex_state_e rb_parser_trace_lex_state(struct parser_params *, enum lex_state_e, enum lex_state_e, int);
1402VALUE rb_parser_lex_state_name(struct parser_params *p, enum lex_state_e state);
1403void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int);
1404PRINTF_ARGS(void rb_parser_fatal(struct parser_params *p, const char *fmt, ...), 2, 3);
1405YYLTYPE *rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc);
1406YYLTYPE *rb_parser_set_location_of_delayed_token(struct parser_params *p, YYLTYPE *yylloc);
1407YYLTYPE *rb_parser_set_location_of_heredoc_end(struct parser_params *p, YYLTYPE *yylloc);
1408YYLTYPE *rb_parser_set_location_of_dummy_end(struct parser_params *p, YYLTYPE *yylloc);
1409YYLTYPE *rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc);
1410YYLTYPE *rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc);
1411RUBY_SYMBOL_EXPORT_END
1413static void error_duplicate_pattern_variable(struct parser_params *p, ID id, const YYLTYPE *loc);
1414static void error_duplicate_pattern_key(struct parser_params *p, ID id, const YYLTYPE *loc);
1416static ID formal_argument(struct parser_params*, ID);
1418static ID formal_argument(struct parser_params*, VALUE);
1420static ID shadowing_lvar(struct parser_params*,ID);
1421static void new_bv(struct parser_params*,ID);
1423static void local_push(struct parser_params*,int);
1424static void local_pop(struct parser_params*);
1425static void local_var(struct parser_params*, ID);
1426static void arg_var(struct parser_params*, ID);
1427static int local_id(struct parser_params *p, ID id);
1428static int local_id_ref(struct parser_params*, ID, ID **);
1430static ID internal_id(struct parser_params*);
1431static NODE *new_args_forward_call(struct parser_params*, NODE*, const YYLTYPE*, const YYLTYPE*);
1433static int check_forwarding_args(struct parser_params*);
1434static void add_forwarding_args(struct parser_params *p);
1435static void forwarding_arg_check(struct parser_params *p, ID arg, ID all, const char *var);
1437static const struct vtable *dyna_push(struct parser_params *);
1438static void dyna_pop(struct parser_params*, const struct vtable *);
1439static int dyna_in_block(struct parser_params*);
1440#define dyna_var(p, id) local_var(p, id)
1441static int dvar_defined(struct parser_params*, ID);
1442static int dvar_defined_ref(struct parser_params*, ID, ID**);
1443static int dvar_curr(struct parser_params*,ID);
1445static int lvar_defined(struct parser_params*, ID);
1447static NODE *numparam_push(struct parser_params *p);
1448static void numparam_pop(struct parser_params *p, NODE *prev_inner);
1451# define METHOD_NOT idNOT
1453# define METHOD_NOT '!
'
1456#define idFWD_REST '*
'
1457#define idFWD_KWREST idPow /* Use simple "**", as tDSTAR is "**arg" */
1458#define idFWD_BLOCK '&
'
1459#define idFWD_ALL idDot3
1461#define arg_FWD_BLOCK Qnone
1463#define arg_FWD_BLOCK idFWD_BLOCK
1465#define FORWARD_ARGS_WITH_RUBY2_KEYWORDS
1467#define RE_OPTION_ONCE (1<<16)
1468#define RE_OPTION_ENCODING_SHIFT 8
1469#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
1470#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
1471#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
1472#define RE_OPTION_MASK 0xff
1473#define RE_OPTION_ARG_ENCODING_NONE 32
1475#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
1476size_t rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr);
1478#define TOKEN2ID(tok) ( \
1479 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
1480 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
1481 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
1482 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
1483 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
1484 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
1485 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
1487/****** Ripper *******/
1491#include "eventids1.h"
1492#include "eventids2.h"
1494extern const struct ripper_parser_ids ripper_parser_ids;
1496static VALUE ripper_dispatch0(struct parser_params*,ID);
1497static VALUE ripper_dispatch1(struct parser_params*,ID,VALUE);
1498static VALUE ripper_dispatch2(struct parser_params*,ID,VALUE,VALUE);
1499static VALUE ripper_dispatch3(struct parser_params*,ID,VALUE,VALUE,VALUE);
1500static VALUE ripper_dispatch4(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE);
1501static VALUE ripper_dispatch5(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE);
1502static VALUE ripper_dispatch7(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE);
1503void ripper_error(struct parser_params *p);
1505#define dispatch0(n) ripper_dispatch0(p, TOKEN_PASTE(ripper_id_, n))
1506#define dispatch1(n,a) ripper_dispatch1(p, TOKEN_PASTE(ripper_id_, n), (a))
1507#define dispatch2(n,a,b) ripper_dispatch2(p, TOKEN_PASTE(ripper_id_, n), (a), (b))
1508#define dispatch3(n,a,b,c) ripper_dispatch3(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c))
1509#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d))
1510#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e))
1511#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))
1513#define yyparse ripper_yyparse
1515#define ID2VAL(id) STATIC_ID2SYM(id)
1516#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
1517#define KWD2EID(t, v) ripper_new_yylval(p, keyword_##t, get_value(v), 0)
1519#define params_new(pars, opts, rest, pars2, kws, kwrest, blk) \
1520 dispatch7(params, (pars), (opts), (rest), (pars2), (kws), (kwrest), (blk))
1523new_args(struct parser_params *p, VALUE pre_args, VALUE opt_args, VALUE rest_arg, VALUE post_args, VALUE tail, YYLTYPE *loc)
1525 struct RNode_RIPPER_VALUES *t = RNODE_RIPPER_VALUES(tail);
1526 VALUE kw_args = t->nd_val1, kw_rest_arg = t->nd_val2, block = t->nd_val3;
1527 return params_new(pre_args, opt_args, rest_arg, post_args, kw_args, kw_rest_arg, block);
1531new_args_tail(struct parser_params *p, VALUE kw_args, VALUE kw_rest_arg, VALUE block, YYLTYPE *loc)
1533 return ripper_new_yylval2(p, kw_args, kw_rest_arg, block);
1537args_with_numbered(struct parser_params *p, VALUE args, int max_numparam)
1543new_array_pattern(struct parser_params *p, VALUE constant, VALUE pre_arg, VALUE aryptn, const YYLTYPE *loc)
1545 struct RNode_RIPPER_VALUES *t = RNODE_RIPPER_VALUES(aryptn);
1546 VALUE pre_args = t->nd_val1, rest_arg = t->nd_val2, post_args = t->nd_val3;
1548 if (!NIL_P(pre_arg)) {
1549 if (!NIL_P(pre_args)) {
1550 rb_ary_unshift(pre_args, pre_arg);
1553 pre_args = rb_ary_new_from_args(1, pre_arg);
1556 return dispatch4(aryptn, constant, pre_args, rest_arg, post_args);
1560new_array_pattern_tail(struct parser_params *p, VALUE pre_args, VALUE has_rest, VALUE rest_arg, VALUE post_args, const YYLTYPE *loc)
1562 return ripper_new_yylval2(p, pre_args, rest_arg, post_args);
1566new_find_pattern(struct parser_params *p, VALUE constant, VALUE fndptn, const YYLTYPE *loc)
1568 struct RNode_RIPPER_VALUES *t = RNODE_RIPPER_VALUES(fndptn);
1569 VALUE pre_rest_arg = t->nd_val1, args = t->nd_val2, post_rest_arg = t->nd_val3;
1571 return dispatch4(fndptn, constant, pre_rest_arg, args, post_rest_arg);
1575new_find_pattern_tail(struct parser_params *p, VALUE pre_rest_arg, VALUE args, VALUE post_rest_arg, const YYLTYPE *loc)
1577 return ripper_new_yylval2(p, pre_rest_arg, args, post_rest_arg);
1580#define new_hash(p,h,l) rb_ary_new_from_args(0)
1583new_unique_key_hash(struct parser_params *p, VALUE ary, const YYLTYPE *loc)
1589new_hash_pattern(struct parser_params *p, VALUE constant, VALUE hshptn, const YYLTYPE *loc)
1591 struct RNode_RIPPER_VALUES *t = RNODE_RIPPER_VALUES(hshptn);
1592 VALUE kw_args = t->nd_val1, kw_rest_arg = t->nd_val2;
1593 return dispatch3(hshptn, constant, kw_args, kw_rest_arg);
1597new_hash_pattern_tail(struct parser_params *p, VALUE kw_args, VALUE kw_rest_arg, const YYLTYPE *loc)
1600 kw_rest_arg = dispatch1(var_field, kw_rest_arg);
1605 return ripper_new_yylval2(p, kw_args, kw_rest_arg, Qnil);
1608#define new_defined(p,expr,loc) dispatch1(defined, (expr))
1610static VALUE heredoc_dedent(struct parser_params*,VALUE);
1613#define ID2VAL(id) (id)
1614#define TOKEN2VAL(t) ID2VAL(t)
1615#define KWD2EID(t, v) keyword_##t
1618new_scope_body(struct parser_params *p, rb_node_args_t *args, NODE *body, const YYLTYPE *loc)
1620 body = remove_begin(body);
1621 reduce_nodes(p, &body);
1622 NODE *n = NEW_SCOPE(args, body, loc);
1623 nd_set_line(n, loc->end_pos.lineno);
1624 set_line_body(body, loc->beg_pos.lineno);
1629rescued_expr(struct parser_params *p, NODE *arg, NODE *rescue,
1630 const YYLTYPE *arg_loc, const YYLTYPE *mod_loc, const YYLTYPE *res_loc)
1632 YYLTYPE loc = code_loc_gen(mod_loc, res_loc);
1633 rescue = NEW_RESBODY(0, remove_begin(rescue), 0, &loc);
1634 loc.beg_pos = arg_loc->beg_pos;
1635 return NEW_RESCUE(arg, rescue, 0, &loc);
1640static NODE *add_block_exit(struct parser_params *p, NODE *node);
1641static rb_node_exits_t *init_block_exit(struct parser_params *p);
1642static rb_node_exits_t *allow_block_exit(struct parser_params *p);
1643static void restore_block_exit(struct parser_params *p, rb_node_exits_t *exits);
1644static void clear_block_exit(struct parser_params *p, bool error);
1647next_rescue_context(struct lex_context *next, const struct lex_context *outer, enum rescue_context def)
1649 next->in_rescue = outer->in_rescue == after_rescue ? after_rescue : def;
1653restore_defun(struct parser_params *p, rb_node_def_temp_t *temp)
1655 /* See: def_name action */
1656 struct lex_context ctxt = temp->save.ctxt;
1657 p->cur_arg = temp->save.cur_arg;
1658 p->ctxt.in_def = ctxt.in_def;
1659 p->ctxt.shareable_constant_value = ctxt.shareable_constant_value;
1660 p->ctxt.in_rescue = ctxt.in_rescue;
1661 p->max_numparam = temp->save.max_numparam;
1662 numparam_pop(p, temp->save.numparam_save);
1663 clear_block_exit(p, true);
1667endless_method_name(struct parser_params *p, ID mid, const YYLTYPE *loc)
1669 if (is_attrset_id(mid)) {
1670 yyerror1(loc, "setter method cannot be defined in an endless method definition");
1672 token_info_drop(p, "def", loc->beg_pos);
1675#define debug_token_line(p, name, line) do { \
1677 const char *const pcur = p->lex.pcur; \
1678 const char *const ptok = p->lex.ptok; \
1679 rb_parser_printf(p, name ":%d (%d: %"PRIdPTRDIFF"|%"PRIdPTRDIFF"|%"PRIdPTRDIFF")\n", \
1680 line, p->ruby_sourceline, \
1681 ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur); \
1685#define begin_definition(k, loc_beg, loc_end) \
1687 if (!(p->ctxt.in_class = (k)[0] != 0)) { \
1688 p->ctxt.in_def = 0; \
1690 else if (p->ctxt.in_def) { \
1691 YYLTYPE loc = code_loc_gen(loc_beg, loc_end); \
1692 yyerror1(&loc, k " definition in method body"); \
1700# define ifndef_ripper(x) (x)
1703# define Qnull Qundef
1704# define ifndef_ripper(x)
1707# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
1708# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
1709# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
1710# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
1711# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
1712# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
1713# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
1714# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
1715# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
1716# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
1717# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1718# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
1719# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
1720# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
1721# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1722# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
1723# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
1724# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
1725# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
1726# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1728extern const ID id_warn, id_warning, id_gets, id_assoc;
1729# define ERR_MESG() STR_NEW2(mesg) /* to bypass Ripper DSL */
1730# define WARN_S_L(s,l) STR_NEW(s,l)
1731# define WARN_S(s) STR_NEW2(s)
1732# define WARN_I(i) INT2NUM(i)
1733# define WARN_ID(i) rb_id2str(i)
1734# define WARN_IVAL(i) i
1735# define PRIsWARN "s"
1736# define rb_warn0L_experimental(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1737# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
1738# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
1739# ifdef HAVE_VA_ARGS_MACRO
1740# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
1742# define WARN_CALL rb_funcall
1744# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
1745# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
1746# ifdef HAVE_VA_ARGS_MACRO
1747# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
1749# define WARNING_CALL rb_funcall
1751# define compile_error ripper_compile_error
1753# define WARN_S_L(s,l) s
1756# define WARN_ID(i) rb_id2name(i)
1757# define WARN_IVAL(i) NUM2INT(i)
1758# define PRIsWARN PRIsVALUE
1759# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1760# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1761# define WARN_CALL rb_compile_warn
1762# define rb_warn0L_experimental(l,fmt) rb_category_compile_warn(RB_WARN_CATEGORY_EXPERIMENTAL, WARN_ARGS_L(l, fmt, 1))
1763# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1764# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1765# define WARNING_CALL rb_compile_warning
1766PRINTF_ARGS(static void parser_compile_error(struct parser_params*, const rb_code_location_t *loc, const char *fmt, ...), 3, 4);
1767# define compile_error(p, ...) parser_compile_error(p, NULL, __VA_ARGS__)
1773 NODE *nd_chain; /* Assume NODE_BREAK, NODE_NEXT, NODE_REDO have nd_chain here */
1777#define RNODE_EXITS(node) ((rb_node_exits_t*)(node))
1780add_block_exit(struct parser_params *p, NODE *node)
1783 compile_error(p, "unexpected null node");
1786 switch (nd_type(node)) {
1787 case NODE_BREAK: case NODE_NEXT: case NODE_REDO: break;
1789 compile_error(p, "unexpected node: %s", parser_node_name(nd_type(node)));
1792 if (!p->ctxt.in_defined) {
1793 rb_node_exits_t *exits = p->exits;
1795 RNODE_EXITS(exits->nd_end)->nd_chain = node;
1796 exits->nd_end = node;
1802static rb_node_exits_t *
1803init_block_exit(struct parser_params *p)
1805 rb_node_exits_t *old = p->exits;
1806 rb_node_exits_t *exits = NODE_NEW_INTERNAL(NODE_EXITS, rb_node_exits_t);
1807 exits->nd_chain = 0;
1808 exits->nd_end = RNODE(exits);
1813static rb_node_exits_t *
1814allow_block_exit(struct parser_params *p)
1816 rb_node_exits_t *exits = p->exits;
1822restore_block_exit(struct parser_params *p, rb_node_exits_t *exits)
1828clear_block_exit(struct parser_params *p, bool error)
1830 rb_node_exits_t *exits = p->exits;
1832 if (error && !compile_for_eval) {
1833 for (NODE *e = RNODE(exits); (e = RNODE_EXITS(e)->nd_chain) != 0; ) {
1834 switch (nd_type(e)) {
1836 yyerror1(&e->nd_loc, "Invalid break");
1839 yyerror1(&e->nd_loc, "Invalid next");
1842 yyerror1(&e->nd_loc, "Invalid redo");
1845 yyerror1(&e->nd_loc, "unexpected node");
1846 goto end_checks; /* no nd_chain */
1851 exits->nd_end = RNODE(exits);
1852 exits->nd_chain = 0;
1855#define WARN_EOL(tok) \
1856 (looking_at_eol_p(p) ? \
1857 (void)rb_warning0("`" tok "' at the end of line without an expression
") : \
1859static int looking_at_eol_p(struct parser_params *p);
1863get_nd_value(struct parser_params *p, NODE *node)
1865 switch (nd_type(node)) {
1867 return RNODE_GASGN(node)->nd_value;
1869 return RNODE_IASGN(node)->nd_value;
1871 return RNODE_LASGN(node)->nd_value;
1873 return RNODE_DASGN(node)->nd_value;
1875 return RNODE_MASGN(node)->nd_value;
1877 return RNODE_CVASGN(node)->nd_value;
1879 return RNODE_CDECL(node)->nd_value;
1881 compile_error(p, "unexpected node: %s
", parser_node_name(nd_type(node)));
1887set_nd_value(struct parser_params *p, NODE *node, NODE *rhs)
1889 switch (nd_type(node)) {
1891 RNODE_CDECL(node)->nd_value = rhs;
1894 RNODE_GASGN(node)->nd_value = rhs;
1897 RNODE_IASGN(node)->nd_value = rhs;
1900 RNODE_LASGN(node)->nd_value = rhs;
1903 RNODE_DASGN(node)->nd_value = rhs;
1906 RNODE_MASGN(node)->nd_value = rhs;
1909 RNODE_CVASGN(node)->nd_value = rhs;
1912 compile_error(p, "unexpected node: %s
", parser_node_name(nd_type(node)));
1918get_nd_vid(struct parser_params *p, NODE *node)
1920 switch (nd_type(node)) {
1922 return RNODE_CDECL(node)->nd_vid;
1924 return RNODE_GASGN(node)->nd_vid;
1926 return RNODE_IASGN(node)->nd_vid;
1928 return RNODE_LASGN(node)->nd_vid;
1930 return RNODE_DASGN(node)->nd_vid;
1932 return RNODE_CVASGN(node)->nd_vid;
1934 compile_error(p, "unexpected node: %s
", parser_node_name(nd_type(node)));
1940get_nd_args(struct parser_params *p, NODE *node)
1942 switch (nd_type(node)) {
1944 return RNODE_CALL(node)->nd_args;
1946 return RNODE_OPCALL(node)->nd_args;
1948 return RNODE_FCALL(node)->nd_args;
1950 return RNODE_QCALL(node)->nd_args;
1960 compile_error(p, "unexpected node: %s
", parser_node_name(nd_type(node)));
1970# define YY_CAST(Type, Val) static_cast<Type> (Val)
1971# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
1973# define YY_CAST(Type, Val) ((Type) (Val))
1974# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
1978# if defined __cplusplus
1979# if 201103L <= __cplusplus
1980# define YY_NULLPTR nullptr
1982# define YY_NULLPTR 0
1985# define YY_NULLPTR ((void*)0)
1993 YYSYMBOL_YYEMPTY = -2,
1994 YYSYMBOL_YYEOF = 0, /* "end-of-input
" */
1995 YYSYMBOL_YYerror = 1, /* error */
1996 YYSYMBOL_YYUNDEF = 2, /* "invalid token
" */
1997 YYSYMBOL_keyword_class = 3, /* "`class
'" */
1998 YYSYMBOL_keyword_module = 4, /* "`module'" */
1999 YYSYMBOL_keyword_def = 5, /* "`def
'" */
2000 YYSYMBOL_keyword_undef = 6, /* "`undef'" */
2001 YYSYMBOL_keyword_begin = 7, /* "`begin
'" */
2002 YYSYMBOL_keyword_rescue = 8, /* "`rescue'" */
2003 YYSYMBOL_keyword_ensure = 9, /* "`ensure
'" */
2004 YYSYMBOL_keyword_end = 10, /* "`end'" */
2005 YYSYMBOL_keyword_if = 11, /* "`if
'" */
2006 YYSYMBOL_keyword_unless = 12, /* "`unless'" */
2007 YYSYMBOL_keyword_then = 13, /* "`then
'" */
2008 YYSYMBOL_keyword_elsif = 14, /* "`elsif'" */
2009 YYSYMBOL_keyword_else = 15, /* "`else
'" */
2010 YYSYMBOL_keyword_case = 16, /* "`case'" */
2011 YYSYMBOL_keyword_when = 17, /* "`when
'" */
2012 YYSYMBOL_keyword_while = 18, /* "`while'" */
2013 YYSYMBOL_keyword_until = 19, /* "`until
'" */
2014 YYSYMBOL_keyword_for = 20, /* "`for'" */
2015 YYSYMBOL_keyword_break = 21, /* "`break
'" */
2016 YYSYMBOL_keyword_next = 22, /* "`next'" */
2017 YYSYMBOL_keyword_redo = 23, /* "`redo
'" */
2018 YYSYMBOL_keyword_retry = 24, /* "`retry'" */
2019 YYSYMBOL_keyword_in = 25, /* "`in
'" */
2020 YYSYMBOL_keyword_do = 26, /* "`do'" */
2021 YYSYMBOL_keyword_do_cond = 27, /* "`do
' for condition" */
2022 YYSYMBOL_keyword_do_block = 28, /* "`do' for block
" */
2023 YYSYMBOL_keyword_do_LAMBDA = 29, /* "`do
' for lambda" */
2024 YYSYMBOL_keyword_return = 30, /* "`return'" */
2025 YYSYMBOL_keyword_yield = 31, /* "`yield
'" */
2026 YYSYMBOL_keyword_super = 32, /* "`super'" */
2027 YYSYMBOL_keyword_self = 33, /* "`self
'" */
2028 YYSYMBOL_keyword_nil = 34, /* "`nil'" */
2029 YYSYMBOL_keyword_true = 35, /* "`true
'" */
2030 YYSYMBOL_keyword_false = 36, /* "`false'" */
2031 YYSYMBOL_keyword_and = 37, /* "`and
'" */
2032 YYSYMBOL_keyword_or = 38, /* "`or'" */
2033 YYSYMBOL_keyword_not = 39, /* "`not
'" */
2034 YYSYMBOL_modifier_if = 40, /* "`if' modifier
" */
2035 YYSYMBOL_modifier_unless = 41, /* "`unless
' modifier" */
2036 YYSYMBOL_modifier_while = 42, /* "`while' modifier
" */
2037 YYSYMBOL_modifier_until = 43, /* "`until
' modifier" */
2038 YYSYMBOL_modifier_rescue = 44, /* "`rescue' modifier
" */
2039 YYSYMBOL_keyword_alias = 45, /* "`alias
'" */
2040 YYSYMBOL_keyword_defined = 46, /* "`defined?'" */
2041 YYSYMBOL_keyword_BEGIN = 47, /* "`BEGIN
'" */
2042 YYSYMBOL_keyword_END = 48, /* "`END'" */
2043 YYSYMBOL_keyword__LINE__ = 49, /* "`__LINE__
'" */
2044 YYSYMBOL_keyword__FILE__ = 50, /* "`__FILE__'" */
2045 YYSYMBOL_keyword__ENCODING__ = 51, /* "`__ENCODING__
'" */
2046 YYSYMBOL_tIDENTIFIER = 52, /* "local variable or method" */
2047 YYSYMBOL_tFID = 53, /* "method" */
2048 YYSYMBOL_tGVAR = 54, /* "global variable" */
2049 YYSYMBOL_tIVAR = 55, /* "instance variable" */
2050 YYSYMBOL_tCONSTANT = 56, /* "constant" */
2051 YYSYMBOL_tCVAR = 57, /* "class variable" */
2052 YYSYMBOL_tLABEL = 58, /* "label" */
2053 YYSYMBOL_tINTEGER = 59, /* "integer literal" */
2054 YYSYMBOL_tFLOAT = 60, /* "float literal" */
2055 YYSYMBOL_tRATIONAL = 61, /* "rational literal" */
2056 YYSYMBOL_tIMAGINARY = 62, /* "imaginary literal" */
2057 YYSYMBOL_tCHAR = 63, /* "char literal" */
2058 YYSYMBOL_tNTH_REF = 64, /* "numbered reference" */
2059 YYSYMBOL_tBACK_REF = 65, /* "back reference" */
2060 YYSYMBOL_tSTRING_CONTENT = 66, /* "literal content" */
2061 YYSYMBOL_tREGEXP_END = 67, /* tREGEXP_END */
2062 YYSYMBOL_tDUMNY_END = 68, /* "dummy end" */
2063 YYSYMBOL_69_ = 69, /* '.
' */
2064 YYSYMBOL_70_backslash_ = 70, /* "backslash" */
2065 YYSYMBOL_tSP = 71, /* "escaped space" */
2066 YYSYMBOL_72_escaped_horizontal_tab_ = 72, /* "escaped horizontal tab" */
2067 YYSYMBOL_73_escaped_form_feed_ = 73, /* "escaped form feed" */
2068 YYSYMBOL_74_escaped_carriage_return_ = 74, /* "escaped carriage return" */
2069 YYSYMBOL_75_escaped_vertical_tab_ = 75, /* "escaped vertical tab" */
2070 YYSYMBOL_tUPLUS = 76, /* "unary+" */
2071 YYSYMBOL_tUMINUS = 77, /* "unary-" */
2072 YYSYMBOL_tPOW = 78, /* "**" */
2073 YYSYMBOL_tCMP = 79, /* "<=>" */
2074 YYSYMBOL_tEQ = 80, /* "==" */
2075 YYSYMBOL_tEQQ = 81, /* "===" */
2076 YYSYMBOL_tNEQ = 82, /* "!=" */
2077 YYSYMBOL_tGEQ = 83, /* ">=" */
2078 YYSYMBOL_tLEQ = 84, /* "<=" */
2079 YYSYMBOL_tANDOP = 85, /* "&&" */
2080 YYSYMBOL_tOROP = 86, /* "||" */
2081 YYSYMBOL_tMATCH = 87, /* "=~" */
2082 YYSYMBOL_tNMATCH = 88, /* "!~" */
2083 YYSYMBOL_tDOT2 = 89, /* ".." */
2084 YYSYMBOL_tDOT3 = 90, /* "..." */
2085 YYSYMBOL_tBDOT2 = 91, /* "(.." */
2086 YYSYMBOL_tBDOT3 = 92, /* "(..." */
2087 YYSYMBOL_tAREF = 93, /* "[]" */
2088 YYSYMBOL_tASET = 94, /* "[]=" */
2089 YYSYMBOL_tLSHFT = 95, /* "<<" */
2090 YYSYMBOL_tRSHFT = 96, /* ">>" */
2091 YYSYMBOL_tANDDOT = 97, /* "&." */
2092 YYSYMBOL_tCOLON2 = 98, /* "::" */
2093 YYSYMBOL_tCOLON3 = 99, /* ":: at EXPR_BEG" */
2094 YYSYMBOL_tOP_ASGN = 100, /* "operator-assignment" */
2095 YYSYMBOL_tASSOC = 101, /* "=>" */
2096 YYSYMBOL_tLPAREN = 102, /* "(" */
2097 YYSYMBOL_tLPAREN_ARG = 103, /* "( arg" */
2098 YYSYMBOL_tRPAREN = 104, /* ")" */
2099 YYSYMBOL_tLBRACK = 105, /* "[" */
2100 YYSYMBOL_tLBRACE = 106, /* "{" */
2101 YYSYMBOL_tLBRACE_ARG = 107, /* "{ arg" */
2102 YYSYMBOL_tSTAR = 108, /* "*" */
2103 YYSYMBOL_tDSTAR = 109, /* "**arg" */
2104 YYSYMBOL_tAMPER = 110, /* "&" */
2105 YYSYMBOL_tLAMBDA = 111, /* "->" */
2106 YYSYMBOL_tSYMBEG = 112, /* "symbol literal" */
2107 YYSYMBOL_tSTRING_BEG = 113, /* "string literal" */
2108 YYSYMBOL_tXSTRING_BEG = 114, /* "backtick literal" */
2109 YYSYMBOL_tREGEXP_BEG = 115, /* "regexp literal" */
2110 YYSYMBOL_tWORDS_BEG = 116, /* "word list" */
2111 YYSYMBOL_tQWORDS_BEG = 117, /* "verbatim word list" */
2112 YYSYMBOL_tSYMBOLS_BEG = 118, /* "symbol list" */
2113 YYSYMBOL_tQSYMBOLS_BEG = 119, /* "verbatim symbol list" */
2114 YYSYMBOL_tSTRING_END = 120, /* "terminator" */
2115 YYSYMBOL_tSTRING_DEND = 121, /* "'}
'" */
2116 YYSYMBOL_tSTRING_DBEG = 122, /* tSTRING_DBEG */
2117 YYSYMBOL_tSTRING_DVAR = 123, /* tSTRING_DVAR */
2118 YYSYMBOL_tLAMBEG = 124, /* tLAMBEG */
2119 YYSYMBOL_tLABEL_END = 125, /* tLABEL_END */
2120 YYSYMBOL_tIGNORED_NL = 126, /* tIGNORED_NL */
2121 YYSYMBOL_tCOMMENT = 127, /* tCOMMENT */
2122 YYSYMBOL_tEMBDOC_BEG = 128, /* tEMBDOC_BEG */
2123 YYSYMBOL_tEMBDOC = 129, /* tEMBDOC */
2124 YYSYMBOL_tEMBDOC_END = 130, /* tEMBDOC_END */
2125 YYSYMBOL_tHEREDOC_BEG = 131, /* tHEREDOC_BEG */
2126 YYSYMBOL_tHEREDOC_END = 132, /* tHEREDOC_END */
2127 YYSYMBOL_k__END__ = 133, /* k__END__ */
2128 YYSYMBOL_tLOWEST = 134, /* tLOWEST */
2129 YYSYMBOL_135_ = 135, /* '=
' */
2130 YYSYMBOL_136_ = 136, /* '?
' */
2131 YYSYMBOL_137_ = 137, /* ':
' */
2132 YYSYMBOL_138_ = 138, /* '>
' */
2133 YYSYMBOL_139_ = 139, /* '<
' */
2134 YYSYMBOL_140_ = 140, /* '|
' */
2135 YYSYMBOL_141_ = 141, /* '^
' */
2136 YYSYMBOL_142_ = 142, /* '&
' */
2137 YYSYMBOL_143_ = 143, /* '+
' */
2138 YYSYMBOL_144_ = 144, /* '-
' */
2139 YYSYMBOL_145_ = 145, /* '*
' */
2140 YYSYMBOL_146_ = 146, /* '/
' */
2141 YYSYMBOL_147_ = 147, /* '%
' */
2142 YYSYMBOL_tUMINUS_NUM = 148, /* tUMINUS_NUM */
2143 YYSYMBOL_149_ = 149, /* '!
' */
2144 YYSYMBOL_150_ = 150, /* '~
' */
2145 YYSYMBOL_tLAST_TOKEN = 151, /* tLAST_TOKEN */
2146 YYSYMBOL_152_ = 152, /* '{
' */
2147 YYSYMBOL_153_ = 153, /* '}
' */
2148 YYSYMBOL_154_ = 154, /* '[
' */
2149 YYSYMBOL_155_ = 155, /* ',
' */
2150 YYSYMBOL_156_ = 156, /* '`
' */
2151 YYSYMBOL_157_ = 157, /* '(
' */
2152 YYSYMBOL_158_ = 158, /* ')
' */
2153 YYSYMBOL_159_ = 159, /* ']
' */
2154 YYSYMBOL_160_ = 160, /* ';
' */
2155 YYSYMBOL_161_ = 161, /* ' ' */
2156 YYSYMBOL_162_n_ = 162, /* '\n
' */
2157 YYSYMBOL_YYACCEPT = 163, /* $accept */
2158 YYSYMBOL_program = 164, /* program */
2159 YYSYMBOL_165_1 = 165, /* $@1 */
2160 YYSYMBOL_top_compstmt = 166, /* top_compstmt */
2161 YYSYMBOL_top_stmts = 167, /* top_stmts */
2162 YYSYMBOL_top_stmt = 168, /* top_stmt */
2163 YYSYMBOL_block_open = 169, /* block_open */
2164 YYSYMBOL_begin_block = 170, /* begin_block */
2165 YYSYMBOL_bodystmt = 171, /* bodystmt */
2166 YYSYMBOL_172_2 = 172, /* $@2 */
2167 YYSYMBOL_173_3 = 173, /* $@3 */
2168 YYSYMBOL_174_4 = 174, /* $@4 */
2169 YYSYMBOL_compstmt = 175, /* compstmt */
2170 YYSYMBOL_stmts = 176, /* stmts */
2171 YYSYMBOL_stmt_or_begin = 177, /* stmt_or_begin */
2172 YYSYMBOL_178_5 = 178, /* $@5 */
2173 YYSYMBOL_allow_exits = 179, /* allow_exits */
2174 YYSYMBOL_k_END = 180, /* k_END */
2175 YYSYMBOL_stmt = 181, /* stmt */
2176 YYSYMBOL_182_6 = 182, /* $@6 */
2177 YYSYMBOL_command_asgn = 183, /* command_asgn */
2178 YYSYMBOL_endless_command = 184, /* endless_command */
2179 YYSYMBOL_command_rhs = 185, /* command_rhs */
2180 YYSYMBOL_expr = 186, /* expr */
2181 YYSYMBOL_187_7 = 187, /* $@7 */
2182 YYSYMBOL_188_8 = 188, /* $@8 */
2183 YYSYMBOL_def_name = 189, /* def_name */
2184 YYSYMBOL_defn_head = 190, /* defn_head */
2185 YYSYMBOL_defs_head = 191, /* defs_head */
2186 YYSYMBOL_192_9 = 192, /* $@9 */
2187 YYSYMBOL_expr_value = 193, /* expr_value */
2188 YYSYMBOL_expr_value_do = 194, /* expr_value_do */
2189 YYSYMBOL_195_10 = 195, /* $@10 */
2190 YYSYMBOL_196_11 = 196, /* $@11 */
2191 YYSYMBOL_command_call = 197, /* command_call */
2192 YYSYMBOL_block_command = 198, /* block_command */
2193 YYSYMBOL_cmd_brace_block = 199, /* cmd_brace_block */
2194 YYSYMBOL_fcall = 200, /* fcall */
2195 YYSYMBOL_command = 201, /* command */
2196 YYSYMBOL_mlhs = 202, /* mlhs */
2197 YYSYMBOL_mlhs_inner = 203, /* mlhs_inner */
2198 YYSYMBOL_mlhs_basic = 204, /* mlhs_basic */
2199 YYSYMBOL_mlhs_item = 205, /* mlhs_item */
2200 YYSYMBOL_mlhs_head = 206, /* mlhs_head */
2201 YYSYMBOL_mlhs_post = 207, /* mlhs_post */
2202 YYSYMBOL_mlhs_node = 208, /* mlhs_node */
2203 YYSYMBOL_lhs = 209, /* lhs */
2204 YYSYMBOL_cname = 210, /* cname */
2205 YYSYMBOL_cpath = 211, /* cpath */
2206 YYSYMBOL_fname = 212, /* fname */
2207 YYSYMBOL_fitem = 213, /* fitem */
2208 YYSYMBOL_undef_list = 214, /* undef_list */
2209 YYSYMBOL_215_12 = 215, /* $@12 */
2210 YYSYMBOL_op = 216, /* op */
2211 YYSYMBOL_reswords = 217, /* reswords */
2212 YYSYMBOL_arg = 218, /* arg */
2213 YYSYMBOL_endless_arg = 219, /* endless_arg */
2214 YYSYMBOL_relop = 220, /* relop */
2215 YYSYMBOL_rel_expr = 221, /* rel_expr */
2216 YYSYMBOL_lex_ctxt = 222, /* lex_ctxt */
2217 YYSYMBOL_begin_defined = 223, /* begin_defined */
2218 YYSYMBOL_after_rescue = 224, /* after_rescue */
2219 YYSYMBOL_arg_value = 225, /* arg_value */
2220 YYSYMBOL_aref_args = 226, /* aref_args */
2221 YYSYMBOL_arg_rhs = 227, /* arg_rhs */
2222 YYSYMBOL_paren_args = 228, /* paren_args */
2223 YYSYMBOL_opt_paren_args = 229, /* opt_paren_args */
2224 YYSYMBOL_opt_call_args = 230, /* opt_call_args */
2225 YYSYMBOL_call_args = 231, /* call_args */
2226 YYSYMBOL_command_args = 232, /* command_args */
2227 YYSYMBOL_233_13 = 233, /* $@13 */
2228 YYSYMBOL_block_arg = 234, /* block_arg */
2229 YYSYMBOL_opt_block_arg = 235, /* opt_block_arg */
2230 YYSYMBOL_args = 236, /* args */
2231 YYSYMBOL_arg_splat = 237, /* arg_splat */
2232 YYSYMBOL_mrhs_arg = 238, /* mrhs_arg */
2233 YYSYMBOL_mrhs = 239, /* mrhs */
2234 YYSYMBOL_primary = 240, /* primary */
2235 YYSYMBOL_241_14 = 241, /* $@14 */
2236 YYSYMBOL_242_15 = 242, /* $@15 */
2237 YYSYMBOL_243_16 = 243, /* @16 */
2238 YYSYMBOL_244_17 = 244, /* @17 */
2239 YYSYMBOL_245_18 = 245, /* $@18 */
2240 YYSYMBOL_246_19 = 246, /* $@19 */
2241 YYSYMBOL_247_20 = 247, /* $@20 */
2242 YYSYMBOL_248_21 = 248, /* $@21 */
2243 YYSYMBOL_249_22 = 249, /* $@22 */
2244 YYSYMBOL_primary_value = 250, /* primary_value */
2245 YYSYMBOL_k_begin = 251, /* k_begin */
2246 YYSYMBOL_k_if = 252, /* k_if */
2247 YYSYMBOL_k_unless = 253, /* k_unless */
2248 YYSYMBOL_k_while = 254, /* k_while */
2249 YYSYMBOL_k_until = 255, /* k_until */
2250 YYSYMBOL_k_case = 256, /* k_case */
2251 YYSYMBOL_k_for = 257, /* k_for */
2252 YYSYMBOL_k_class = 258, /* k_class */
2253 YYSYMBOL_k_module = 259, /* k_module */
2254 YYSYMBOL_k_def = 260, /* k_def */
2255 YYSYMBOL_k_do = 261, /* k_do */
2256 YYSYMBOL_k_do_block = 262, /* k_do_block */
2257 YYSYMBOL_k_rescue = 263, /* k_rescue */
2258 YYSYMBOL_k_ensure = 264, /* k_ensure */
2259 YYSYMBOL_k_when = 265, /* k_when */
2260 YYSYMBOL_k_else = 266, /* k_else */
2261 YYSYMBOL_k_elsif = 267, /* k_elsif */
2262 YYSYMBOL_k_end = 268, /* k_end */
2263 YYSYMBOL_k_return = 269, /* k_return */
2264 YYSYMBOL_k_yield = 270, /* k_yield */
2265 YYSYMBOL_then = 271, /* then */
2266 YYSYMBOL_do = 272, /* do */
2267 YYSYMBOL_if_tail = 273, /* if_tail */
2268 YYSYMBOL_opt_else = 274, /* opt_else */
2269 YYSYMBOL_for_var = 275, /* for_var */
2270 YYSYMBOL_f_marg = 276, /* f_marg */
2271 YYSYMBOL_f_marg_list = 277, /* f_marg_list */
2272 YYSYMBOL_f_margs = 278, /* f_margs */
2273 YYSYMBOL_f_rest_marg = 279, /* f_rest_marg */
2274 YYSYMBOL_f_any_kwrest = 280, /* f_any_kwrest */
2275 YYSYMBOL_f_eq = 281, /* f_eq */
2276 YYSYMBOL_282_23 = 282, /* $@23 */
2277 YYSYMBOL_block_args_tail = 283, /* block_args_tail */
2278 YYSYMBOL_opt_block_args_tail = 284, /* opt_block_args_tail */
2279 YYSYMBOL_excessed_comma = 285, /* excessed_comma */
2280 YYSYMBOL_block_param = 286, /* block_param */
2281 YYSYMBOL_opt_block_param = 287, /* opt_block_param */
2282 YYSYMBOL_block_param_def = 288, /* block_param_def */
2283 YYSYMBOL_opt_bv_decl = 289, /* opt_bv_decl */
2284 YYSYMBOL_bv_decls = 290, /* bv_decls */
2285 YYSYMBOL_bvar = 291, /* bvar */
2286 YYSYMBOL_max_numparam = 292, /* max_numparam */
2287 YYSYMBOL_numparam = 293, /* numparam */
2288 YYSYMBOL_lambda = 294, /* lambda */
2289 YYSYMBOL_295_24 = 295, /* @24 */
2290 YYSYMBOL_296_25 = 296, /* $@25 */
2291 YYSYMBOL_f_larglist = 297, /* f_larglist */
2292 YYSYMBOL_lambda_body = 298, /* lambda_body */
2293 YYSYMBOL_299_26 = 299, /* $@26 */
2294 YYSYMBOL_do_block = 300, /* do_block */
2295 YYSYMBOL_block_call = 301, /* block_call */
2296 YYSYMBOL_method_call = 302, /* method_call */
2297 YYSYMBOL_brace_block = 303, /* brace_block */
2298 YYSYMBOL_brace_body = 304, /* brace_body */
2299 YYSYMBOL_305_27 = 305, /* @27 */
2300 YYSYMBOL_do_body = 306, /* do_body */
2301 YYSYMBOL_307_28 = 307, /* @28 */
2302 YYSYMBOL_case_args = 308, /* case_args */
2303 YYSYMBOL_case_body = 309, /* case_body */
2304 YYSYMBOL_cases = 310, /* cases */
2305 YYSYMBOL_p_pvtbl = 311, /* p_pvtbl */
2306 YYSYMBOL_p_pktbl = 312, /* p_pktbl */
2307 YYSYMBOL_p_in_kwarg = 313, /* p_in_kwarg */
2308 YYSYMBOL_p_case_body = 314, /* p_case_body */
2309 YYSYMBOL_315_29 = 315, /* $@29 */
2310 YYSYMBOL_p_cases = 316, /* p_cases */
2311 YYSYMBOL_p_top_expr = 317, /* p_top_expr */
2312 YYSYMBOL_p_top_expr_body = 318, /* p_top_expr_body */
2313 YYSYMBOL_p_expr = 319, /* p_expr */
2314 YYSYMBOL_p_as = 320, /* p_as */
2315 YYSYMBOL_p_alt = 321, /* p_alt */
2316 YYSYMBOL_p_lparen = 322, /* p_lparen */
2317 YYSYMBOL_p_lbracket = 323, /* p_lbracket */
2318 YYSYMBOL_p_expr_basic = 324, /* p_expr_basic */
2319 YYSYMBOL_325_30 = 325, /* $@30 */
2320 YYSYMBOL_p_args = 326, /* p_args */
2321 YYSYMBOL_p_args_head = 327, /* p_args_head */
2322 YYSYMBOL_p_args_tail = 328, /* p_args_tail */
2323 YYSYMBOL_p_find = 329, /* p_find */
2324 YYSYMBOL_p_rest = 330, /* p_rest */
2325 YYSYMBOL_p_args_post = 331, /* p_args_post */
2326 YYSYMBOL_p_arg = 332, /* p_arg */
2327 YYSYMBOL_p_kwargs = 333, /* p_kwargs */
2328 YYSYMBOL_p_kwarg = 334, /* p_kwarg */
2329 YYSYMBOL_p_kw = 335, /* p_kw */
2330 YYSYMBOL_p_kw_label = 336, /* p_kw_label */
2331 YYSYMBOL_p_kwrest = 337, /* p_kwrest */
2332 YYSYMBOL_p_kwnorest = 338, /* p_kwnorest */
2333 YYSYMBOL_p_any_kwrest = 339, /* p_any_kwrest */
2334 YYSYMBOL_p_value = 340, /* p_value */
2335 YYSYMBOL_p_primitive = 341, /* p_primitive */
2336 YYSYMBOL_p_variable = 342, /* p_variable */
2337 YYSYMBOL_p_var_ref = 343, /* p_var_ref */
2338 YYSYMBOL_p_expr_ref = 344, /* p_expr_ref */
2339 YYSYMBOL_p_const = 345, /* p_const */
2340 YYSYMBOL_opt_rescue = 346, /* opt_rescue */
2341 YYSYMBOL_exc_list = 347, /* exc_list */
2342 YYSYMBOL_exc_var = 348, /* exc_var */
2343 YYSYMBOL_opt_ensure = 349, /* opt_ensure */
2344 YYSYMBOL_literal = 350, /* literal */
2345 YYSYMBOL_strings = 351, /* strings */
2346 YYSYMBOL_string = 352, /* string */
2347 YYSYMBOL_string1 = 353, /* string1 */
2348 YYSYMBOL_xstring = 354, /* xstring */
2349 YYSYMBOL_regexp = 355, /* regexp */
2350 YYSYMBOL_words_sep = 356, /* words_sep */
2351 YYSYMBOL_words = 357, /* words */
2352 YYSYMBOL_word_list = 358, /* word_list */
2353 YYSYMBOL_word = 359, /* word */
2354 YYSYMBOL_symbols = 360, /* symbols */
2355 YYSYMBOL_symbol_list = 361, /* symbol_list */
2356 YYSYMBOL_qwords = 362, /* qwords */
2357 YYSYMBOL_qsymbols = 363, /* qsymbols */
2358 YYSYMBOL_qword_list = 364, /* qword_list */
2359 YYSYMBOL_qsym_list = 365, /* qsym_list */
2360 YYSYMBOL_string_contents = 366, /* string_contents */
2361 YYSYMBOL_xstring_contents = 367, /* xstring_contents */
2362 YYSYMBOL_regexp_contents = 368, /* regexp_contents */
2363 YYSYMBOL_string_content = 369, /* string_content */
2364 YYSYMBOL_370_31 = 370, /* @31 */
2365 YYSYMBOL_371_32 = 371, /* @32 */
2366 YYSYMBOL_372_33 = 372, /* @33 */
2367 YYSYMBOL_373_34 = 373, /* @34 */
2368 YYSYMBOL_string_dend = 374, /* string_dend */
2369 YYSYMBOL_string_dvar = 375, /* string_dvar */
2370 YYSYMBOL_symbol = 376, /* symbol */
2371 YYSYMBOL_ssym = 377, /* ssym */
2372 YYSYMBOL_sym = 378, /* sym */
2373 YYSYMBOL_dsym = 379, /* dsym */
2374 YYSYMBOL_numeric = 380, /* numeric */
2375 YYSYMBOL_simple_numeric = 381, /* simple_numeric */
2376 YYSYMBOL_nonlocal_var = 382, /* nonlocal_var */
2377 YYSYMBOL_user_variable = 383, /* user_variable */
2378 YYSYMBOL_keyword_variable = 384, /* keyword_variable */
2379 YYSYMBOL_var_ref = 385, /* var_ref */
2380 YYSYMBOL_var_lhs = 386, /* var_lhs */
2381 YYSYMBOL_backref = 387, /* backref */
2382 YYSYMBOL_superclass = 388, /* superclass */
2383 YYSYMBOL_389_35 = 389, /* $@35 */
2384 YYSYMBOL_f_opt_paren_args = 390, /* f_opt_paren_args */
2385 YYSYMBOL_f_paren_args = 391, /* f_paren_args */
2386 YYSYMBOL_f_arglist = 392, /* f_arglist */
2387 YYSYMBOL_393_36 = 393, /* @36 */
2388 YYSYMBOL_args_tail = 394, /* args_tail */
2389 YYSYMBOL_opt_args_tail = 395, /* opt_args_tail */
2390 YYSYMBOL_f_args = 396, /* f_args */
2391 YYSYMBOL_args_forward = 397, /* args_forward */
2392 YYSYMBOL_f_bad_arg = 398, /* f_bad_arg */
2393 YYSYMBOL_f_norm_arg = 399, /* f_norm_arg */
2394 YYSYMBOL_f_arg_asgn = 400, /* f_arg_asgn */
2395 YYSYMBOL_f_arg_item = 401, /* f_arg_item */
2396 YYSYMBOL_f_arg = 402, /* f_arg */
2397 YYSYMBOL_f_label = 403, /* f_label */
2398 YYSYMBOL_f_kw = 404, /* f_kw */
2399 YYSYMBOL_f_block_kw = 405, /* f_block_kw */
2400 YYSYMBOL_f_block_kwarg = 406, /* f_block_kwarg */
2401 YYSYMBOL_f_kwarg = 407, /* f_kwarg */
2402 YYSYMBOL_kwrest_mark = 408, /* kwrest_mark */
2403 YYSYMBOL_f_no_kwarg = 409, /* f_no_kwarg */
2404 YYSYMBOL_f_kwrest = 410, /* f_kwrest */
2405 YYSYMBOL_f_opt = 411, /* f_opt */
2406 YYSYMBOL_f_block_opt = 412, /* f_block_opt */
2407 YYSYMBOL_f_block_optarg = 413, /* f_block_optarg */
2408 YYSYMBOL_f_optarg = 414, /* f_optarg */
2409 YYSYMBOL_restarg_mark = 415, /* restarg_mark */
2410 YYSYMBOL_f_rest_arg = 416, /* f_rest_arg */
2411 YYSYMBOL_blkarg_mark = 417, /* blkarg_mark */
2412 YYSYMBOL_f_block_arg = 418, /* f_block_arg */
2413 YYSYMBOL_opt_f_block_arg = 419, /* opt_f_block_arg */
2414 YYSYMBOL_singleton = 420, /* singleton */
2415 YYSYMBOL_421_37 = 421, /* $@37 */
2416 YYSYMBOL_assoc_list = 422, /* assoc_list */
2417 YYSYMBOL_assocs = 423, /* assocs */
2418 YYSYMBOL_assoc = 424, /* assoc */
2419 YYSYMBOL_operation = 425, /* operation */
2420 YYSYMBOL_operation2 = 426, /* operation2 */
2421 YYSYMBOL_operation3 = 427, /* operation3 */
2422 YYSYMBOL_dot_or_colon = 428, /* dot_or_colon */
2423 YYSYMBOL_call_op = 429, /* call_op */
2424 YYSYMBOL_call_op2 = 430, /* call_op2 */
2425 YYSYMBOL_opt_terms = 431, /* opt_terms */
2426 YYSYMBOL_opt_nl = 432, /* opt_nl */
2427 YYSYMBOL_rparen = 433, /* rparen */
2428 YYSYMBOL_rbracket = 434, /* rbracket */
2429 YYSYMBOL_rbrace = 435, /* rbrace */
2430 YYSYMBOL_trailer = 436, /* trailer */
2431 YYSYMBOL_term = 437, /* term */
2432 YYSYMBOL_terms = 438, /* terms */
2433 YYSYMBOL_none = 439 /* none */
2435typedef enum yysymbol_kind_t yysymbol_kind_t;
2444/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
2445 <limits.h> and (if available) <stdint.h> are included
2446 so that the code can choose integer types of a good width. */
2448#ifndef __PTRDIFF_MAX__
2449# include <limits.h> /* INFRINGES ON USER NAME SPACE */
2450# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
2451# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
2456/* Narrow types that promote to a signed type and that can represent a
2457 signed or unsigned integer of at least N bits. In tables they can
2458 save space and decrease cache pressure. Promoting to a signed type
2459 helps avoid bugs in integer arithmetic. */
2461#ifdef __INT_LEAST8_MAX__
2462typedef __INT_LEAST8_TYPE__ yytype_int8;
2463#elif defined YY_STDINT_H
2464typedef int_least8_t yytype_int8;
2466typedef signed char yytype_int8;
2469#ifdef __INT_LEAST16_MAX__
2470typedef __INT_LEAST16_TYPE__ yytype_int16;
2471#elif defined YY_STDINT_H
2472typedef int_least16_t yytype_int16;
2474typedef short yytype_int16;
2477/* Work around bug in HP-UX 11.23, which defines these macros
2478 incorrectly for preprocessor constants. This workaround can likely
2479 be removed in 2023, as HPE has promised support for HP-UX 11.23
2480 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
2481 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
2483# undef UINT_LEAST8_MAX
2484# undef UINT_LEAST16_MAX
2485# define UINT_LEAST8_MAX 255
2486# define UINT_LEAST16_MAX 65535
2489#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
2490typedef __UINT_LEAST8_TYPE__ yytype_uint8;
2491#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
2492 && UINT_LEAST8_MAX <= INT_MAX)
2493typedef uint_least8_t yytype_uint8;
2494#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
2495typedef unsigned char yytype_uint8;
2497typedef short yytype_uint8;
2500#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
2501typedef __UINT_LEAST16_TYPE__ yytype_uint16;
2502#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
2503 && UINT_LEAST16_MAX <= INT_MAX)
2504typedef uint_least16_t yytype_uint16;
2505#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
2506typedef unsigned short yytype_uint16;
2508typedef int yytype_uint16;
2512# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
2513# define YYPTRDIFF_T __PTRDIFF_TYPE__
2514# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
2515# elif defined PTRDIFF_MAX
2517# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
2519# define YYPTRDIFF_T ptrdiff_t
2520# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
2522# define YYPTRDIFF_T long
2523# define YYPTRDIFF_MAXIMUM LONG_MAX
2528# ifdef __SIZE_TYPE__
2529# define YYSIZE_T __SIZE_TYPE__
2530# elif defined size_t
2531# define YYSIZE_T size_t
2532# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
2533# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
2534# define YYSIZE_T size_t
2536# define YYSIZE_T unsigned
2540#define YYSIZE_MAXIMUM \
2541 YY_CAST (YYPTRDIFF_T, \
2542 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
2543 ? YYPTRDIFF_MAXIMUM \
2544 : YY_CAST (YYSIZE_T, -1)))
2546#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
2549/* Stored state numbers (used for stacks). */
2550typedef yytype_int16 yy_state_t;
2552/* State numbers in computations. */
2553typedef int yy_state_fast_t;
2556# if defined YYENABLE_NLS && YYENABLE_NLS
2558# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
2559# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
2563# define YY_(Msgid) Msgid
2568#ifndef YY_ATTRIBUTE_PURE
2569# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
2570# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
2572# define YY_ATTRIBUTE_PURE
2576#ifndef YY_ATTRIBUTE_UNUSED
2577# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
2578# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
2580# define YY_ATTRIBUTE_UNUSED
2584/* Suppress unused-variable warnings by "using" E. */
2585#if ! defined lint || defined __GNUC__
2586# define YY_USE(E) ((void) (E))
2588# define YY_USE(E) /* empty */
2591/* Suppress an incorrect diagnostic about yylval being uninitialized. */
2592#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
2593# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
2594# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
2595 _Pragma ("GCC diagnostic push") \
2596 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
2598# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
2599 _Pragma ("GCC diagnostic push") \
2600 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
2601 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
2603# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
2604 _Pragma ("GCC diagnostic pop")
2606# define YY_INITIAL_VALUE(Value) Value
2608#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2609# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2610# define YY_IGNORE_MAYBE_UNINITIALIZED_END
2612#ifndef YY_INITIAL_VALUE
2613# define YY_INITIAL_VALUE(Value) /* Nothing. */
2616#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
2617# define YY_IGNORE_USELESS_CAST_BEGIN \
2618 _Pragma ("GCC diagnostic push") \
2619 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
2620# define YY_IGNORE_USELESS_CAST_END \
2621 _Pragma ("GCC diagnostic pop")
2623#ifndef YY_IGNORE_USELESS_CAST_BEGIN
2624# define YY_IGNORE_USELESS_CAST_BEGIN
2625# define YY_IGNORE_USELESS_CAST_END
2629#define YY_ASSERT(E) ((void) (0 && (E)))
2633/* The parser invokes alloca or malloc; define the necessary symbols. */
2635# ifdef YYSTACK_USE_ALLOCA
2636# if YYSTACK_USE_ALLOCA
2638# define YYSTACK_ALLOC __builtin_alloca
2639# elif defined __BUILTIN_VA_ARG_INCR
2640# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
2642# define YYSTACK_ALLOC __alloca
2643# elif defined _MSC_VER
2644# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
2645# define alloca _alloca
2647# define YYSTACK_ALLOC alloca
2648# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
2649# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
2650 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
2651# ifndef EXIT_SUCCESS
2652# define EXIT_SUCCESS 0
2659# ifdef YYSTACK_ALLOC
2660 /* Pacify GCC's
'empty if-body' warning. */
2661# define YYSTACK_FREE(Ptr) do { ; } while (0)
2662# ifndef YYSTACK_ALLOC_MAXIMUM
2667# define YYSTACK_ALLOC_MAXIMUM 4032
2670# define YYSTACK_ALLOC YYMALLOC
2671# define YYSTACK_FREE YYFREE
2672# ifndef YYSTACK_ALLOC_MAXIMUM
2673# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
2675# if (defined __cplusplus && ! defined EXIT_SUCCESS \
2676 && ! ((defined YYMALLOC || defined malloc) \
2677 && (defined YYFREE || defined free)))
2679# ifndef EXIT_SUCCESS
2680# define EXIT_SUCCESS 0
2684# define YYMALLOC malloc
2685# if ! defined malloc && ! defined EXIT_SUCCESS
2686void *malloc (YYSIZE_T);
2691# if ! defined free && ! defined EXIT_SUCCESS
2698#if (! defined yyoverflow \
2699 && (! defined __cplusplus \
2700 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
2701 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
2706 yy_state_t yyss_alloc;
2712# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
2716# define YYSTACK_BYTES(N) \
2717 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
2718 + YYSIZEOF (YYLTYPE)) \
2719 + 2 * YYSTACK_GAP_MAXIMUM)
2721# define YYCOPY_NEEDED 1
2728# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
2731 YYPTRDIFF_T yynewbytes; \
2732 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
2733 Stack = &yyptr->Stack_alloc; \
2734 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
2735 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
2741#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
2745# if defined __GNUC__ && 1 < __GNUC__
2746# define YYCOPY(Dst, Src, Count) \
2747 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
2749# define YYCOPY(Dst, Src, Count) \
2753 for (yyi = 0; yyi < (Count); yyi++) \
2754 (Dst)[yyi] = (Src)[yyi]; \
2767#define YYNTOKENS 163
2773#define YYNSTATES 1341
2776#define YYMAXUTOK 362
2781#define YYTRANSLATE(YYX) \
2782 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
2783 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
2788static const yytype_uint8 yytranslate[] =
2790 0, 2, 2, 2, 2, 2, 2, 2, 2, 72,
2791 162, 75, 73, 74, 2, 2, 2, 2, 2, 2,
2792 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2793 2, 2, 161, 149, 2, 2, 2, 147, 142, 2,
2794 157, 158, 145, 143, 155, 144, 69, 146, 2, 2,
2795 2, 2, 2, 2, 2, 2, 2, 2, 137, 160,
2796 139, 135, 138, 136, 2, 2, 2, 2, 2, 2,
2797 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2798 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2799 2, 154, 70, 159, 141, 2, 156, 2, 2, 2,
2800 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2801 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2802 2, 2, 2, 152, 140, 153, 150, 2, 89, 90,
2803 91, 92, 76, 77, 78, 79, 95, 96, 84, 83,
2804 80, 81, 82, 87, 88, 93, 94, 98, 85, 86,
2805 97, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2806 2, 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, 1, 2, 3, 4,
2816 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2817 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2818 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2819 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
2820 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
2821 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
2822 65, 66, 67, 68, 71, 99, 100, 101, 102, 103,
2823 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
2824 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
2825 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
2831static const yytype_int16 yyrline[] =
2833 0, 2193, 2193, 2193, 2221, 2227, 2234, 2241, 2250, 2255,
2834 2261, 2263, 2279, 2284, 2275, 2297, 2294, 2309, 2315, 2322,
2835 2329, 2338, 2343, 2342, 2352, 2354, 2360, 2360, 2367, 2374,
2836 2384, 2393, 2400, 2408, 2416, 2429, 2442, 2453, 2468, 2469,
2837 2477, 2484, 2497, 2504, 2505, 2514, 2521, 2528, 2536, 2543,
2838 2550, 2558, 2565, 2578, 2591, 2601, 2602, 2610, 2616, 2621,
2839 2631, 2634, 2635, 2639, 2643, 2647, 2652, 2651, 2667, 2666,
2840 2681, 2684, 2696, 2709, 2708, 2728, 2733, 2741, 2741, 2741,
2841 2747, 2748, 2751, 2752, 2761, 2770, 2779, 2788, 2799, 2806,
2842 2813, 2820, 2827, 2835, 2843, 2851, 2858, 2867, 2878, 2879,
2843 2888, 2889, 2898, 2905, 2912, 2919, 2926, 2933, 2940, 2947,
2844 2954, 2961, 2970, 2971, 2980, 2987, 2996, 3003, 3012, 3019,
2845 3026, 3033, 3041, 3048, 3056, 3063, 3070, 3080, 3087, 3094,
2846 3101, 3108, 3115, 3122, 3129, 3136, 3146, 3154, 3157, 3164,
2847 3171, 3180, 3181, 3182, 3183, 3188, 3191, 3198, 3201, 3208,
2848 3208, 3218, 3219, 3220, 3221, 3222, 3223, 3224, 3225, 3226,
2849 3227, 3228, 3229, 3230, 3231, 3232, 3233, 3234, 3235, 3236,
2850 3237, 3238, 3239, 3240, 3241, 3242, 3243, 3244, 3245, 3246,
2851 3247, 3250, 3250, 3250, 3251, 3251, 3252, 3252, 3252, 3253,
2852 3253, 3253, 3253, 3254, 3254, 3254, 3254, 3255, 3255, 3255,
2853 3256, 3256, 3256, 3256, 3257, 3257, 3257, 3257, 3258, 3258,
2854 3258, 3258, 3259, 3259, 3259, 3259, 3260, 3260, 3260, 3260,
2855 3261, 3261, 3264, 3271, 3278, 3285, 3292, 3299, 3306, 3314,
2856 3322, 3330, 3339, 3348, 3356, 3364, 3372, 3380, 3384, 3388,
2857 3392, 3396, 3400, 3404, 3408, 3412, 3416, 3420, 3424, 3428,
2858 3432, 3433, 3437, 3441, 3445, 3449, 3453, 3457, 3461, 3465,
2859 3469, 3473, 3477, 3482, 3491, 3504, 3517, 3523, 3524, 3532,
2860 3538, 3539, 3540, 3541, 3544, 3548, 3555, 3561, 3568, 3575,
2861 3582, 3583, 3587, 3594, 3603, 3608, 3619, 3626, 3638, 3652,
2862 3653, 3656, 3657, 3658, 3662, 3669, 3678, 3686, 3693, 3701,
2863 3709, 3713, 3713, 3750, 3757, 3767, 3771, 3778, 3785, 3792,
2864 3799, 3809, 3813, 3824, 3825, 3829, 3836, 3843, 3852, 3853,
2865 3854, 3855, 3856, 3857, 3858, 3859, 3860, 3861, 3862, 3870,
2866 3869, 3884, 3884, 3892, 3900, 3907, 3914, 3921, 3929, 3936,
2867 3943, 3950, 3957, 3962, 3966, 3970, 3977, 3978, 3986, 3987,
2868 3998, 4009, 4020, 4032, 4031, 4048, 4047, 4062, 4071, 4116,
2869 4115, 4134, 4133, 4154, 4153, 4173, 4171, 4192, 4190, 4209,
2870 4214, 4219, 4224, 4241, 4248, 4257, 4277, 4286, 4296, 4306,
2871 4315, 4325, 4336, 4347, 4355, 4364, 4373, 4381, 4388, 4394,
2872 4409, 4416, 4423, 4429, 4436, 4443, 4444, 4445, 4448, 4449,
2873 4452, 4453, 4465, 4466, 4475, 4476, 4479, 4487, 4496, 4503,
2874 4512, 4519, 4526, 4533, 4540, 4549, 4557, 4566, 4567, 4570,
2875 4570, 4572, 4576, 4580, 4584, 4590, 4595, 4600, 4610, 4614,
2876 4618, 4622, 4626, 4630, 4635, 4639, 4643, 4647, 4651, 4655,
2877 4659, 4663, 4667, 4673, 4674, 4680, 4691, 4704, 4708, 4717,
2878 4719, 4723, 4728, 4734, 4740, 4746, 4754, 4745, 4780, 4789,
2879 4800, 4806, 4805, 4817, 4826, 4840, 4847, 4854, 4863, 4872,
2880 4880, 4888, 4895, 4903, 4911, 4918, 4925, 4935, 4942, 4951,
2881 4951, 4968, 4968, 4989, 4997, 5004, 5012, 5021, 5033, 5034,
2882 5037, 5038, 5040, 5051, 5048, 5066, 5067, 5070, 5071, 5079,
2883 5089, 5090, 5095, 5103, 5107, 5111, 5117, 5120, 5129, 5132,
2884 5139, 5142, 5143, 5145, 5146, 5147, 5156, 5165, 5174, 5179,
2885 5188, 5197, 5206, 5211, 5215, 5219, 5225, 5224, 5234, 5239,
2886 5246, 5255, 5259, 5268, 5272, 5276, 5279, 5283, 5292, 5296,
2887 5302, 5309, 5317, 5326, 5327, 5336, 5345, 5349, 5353, 5357,
2888 5363, 5365, 5374, 5382, 5396, 5397, 5420, 5424, 5430, 5436,
2889 5437, 5440, 5441, 5450, 5459, 5467, 5475, 5476, 5477, 5478,
2890 5486, 5496, 5497, 5498, 5499, 5500, 5501, 5502, 5503, 5504,
2891 5511, 5514, 5524, 5535, 5544, 5553, 5560, 5567, 5576, 5600,
2892 5603, 5610, 5617, 5620, 5624, 5627, 5635, 5638, 5639, 5642,
2893 5659, 5660, 5661, 5670, 5680, 5689, 5695, 5696, 5699, 5709,
2894 5715, 5724, 5726, 5735, 5745, 5751, 5760, 5769, 5779, 5785,
2895 5795, 5801, 5811, 5821, 5840, 5846, 5856, 5866, 5907, 5910,
2896 5909, 5926, 5935, 5939, 5925, 5960, 5961, 5964, 5971, 5974,
2897 5975, 5978, 5988, 5989, 5992, 6002, 6003, 6013, 6014, 6015,
2898 6016, 6019, 6020, 6021, 6024, 6025, 6026, 6029, 6030, 6031,
2899 6032, 6033, 6034, 6035, 6038, 6051, 6060, 6067, 6076, 6077,
2900 6081, 6080, 6090, 6098, 6099, 6107, 6119, 6120, 6120, 6136,
2901 6140, 6144, 6148, 6152, 6162, 6167, 6172, 6176, 6180, 6184,
2902 6188, 6192, 6196, 6200, 6204, 6208, 6212, 6216, 6220, 6224,
2903 6229, 6235, 6248, 6257, 6266, 6275, 6286, 6287, 6295, 6304,
2904 6312, 6333, 6335, 6348, 6358, 6367, 6378, 6386, 6396, 6403,
2905 6413, 6420, 6429, 6430, 6433, 6441, 6449, 6459, 6470, 6481,
2906 6488, 6497, 6504, 6513, 6514, 6517, 6525, 6535, 6536, 6539,
2907 6547, 6557, 6561, 6567, 6572, 6572, 6598, 6599, 6608, 6610,
2908 6633, 6644, 6651, 6660, 6668, 6685, 6696, 6697, 6698, 6701,
2909 6702, 6705, 6706, 6707, 6710, 6711, 6714, 6715, 6718, 6719,
2910 6722, 6723, 6726, 6727, 6730, 6733, 6736, 6739, 6740, 6743,
2911 6744, 6751, 6752, 6756
2916#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
2921static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2925static const char *
const yytname[] =
2927 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"`class'\"",
2928 "\"`module'\"",
"\"`def'\"",
"\"`undef'\"",
"\"`begin'\"",
2929 "\"`rescue'\"",
"\"`ensure'\"",
"\"`end'\"",
"\"`if'\"",
"\"`unless'\"",
2930 "\"`then'\"",
"\"`elsif'\"",
"\"`else'\"",
"\"`case'\"",
"\"`when'\"",
2931 "\"`while'\"",
"\"`until'\"",
"\"`for'\"",
"\"`break'\"",
"\"`next'\"",
2932 "\"`redo'\"",
"\"`retry'\"",
"\"`in'\"",
"\"`do'\"",
2933 "\"`do' for condition\"",
"\"`do' for block\"",
"\"`do' for lambda\"",
2934 "\"`return'\"",
"\"`yield'\"",
"\"`super'\"",
"\"`self'\"",
"\"`nil'\"",
2935 "\"`true'\"",
"\"`false'\"",
"\"`and'\"",
"\"`or'\"",
"\"`not'\"",
2936 "\"`if' modifier\"",
"\"`unless' modifier\"",
"\"`while' modifier\"",
2937 "\"`until' modifier\"",
"\"`rescue' modifier\"",
"\"`alias'\"",
2938 "\"`defined?'\"",
"\"`BEGIN'\"",
"\"`END'\"",
"\"`__LINE__'\"",
2939 "\"`__FILE__'\"",
"\"`__ENCODING__'\"",
"\"local variable or method\"",
2940 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
2941 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
2942 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
2943 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
2944 "\"literal content\"",
"tREGEXP_END",
"\"dummy end\"",
"'.'",
2945 "\"backslash\"",
"\"escaped space\"",
"\"escaped horizontal tab\"",
2946 "\"escaped form feed\"",
"\"escaped carriage return\"",
2947 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
2948 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
2949 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
2950 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
2951 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
2952 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
2953 "\"**arg\"",
"\"&\"",
"\"->\"",
"\"symbol literal\"",
2954 "\"string literal\"",
"\"backtick literal\"",
"\"regexp literal\"",
2955 "\"word list\"",
"\"verbatim word list\"",
"\"symbol list\"",
2956 "\"verbatim symbol list\"",
"\"terminator\"",
"\"'}'\"",
"tSTRING_DBEG",
2957 "tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tIGNORED_NL",
"tCOMMENT",
2958 "tEMBDOC_BEG",
"tEMBDOC",
"tEMBDOC_END",
"tHEREDOC_BEG",
"tHEREDOC_END",
2959 "k__END__",
"tLOWEST",
"'='",
"'?'",
"':'",
"'>'",
"'<'",
"'|'",
"'^'",
2960 "'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
"tUMINUS_NUM",
"'!'",
"'~'",
2961 "tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"','",
"'`'",
"'('",
"')'",
"']'",
2962 "';'",
"' '",
"'\\n'",
"$accept",
"program",
"$@1",
"top_compstmt",
2963 "top_stmts",
"top_stmt",
"block_open",
"begin_block",
"bodystmt",
"$@2",
2964 "$@3",
"$@4",
"compstmt",
"stmts",
"stmt_or_begin",
"$@5",
"allow_exits",
2965 "k_END",
"stmt",
"$@6",
"command_asgn",
"endless_command",
"command_rhs",
2966 "expr",
"$@7",
"$@8",
"def_name",
"defn_head",
"defs_head",
"$@9",
2967 "expr_value",
"expr_value_do",
"$@10",
"$@11",
"command_call",
2968 "block_command",
"cmd_brace_block",
"fcall",
"command",
"mlhs",
2969 "mlhs_inner",
"mlhs_basic",
"mlhs_item",
"mlhs_head",
"mlhs_post",
2970 "mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
"fitem",
"undef_list",
2971 "$@12",
"op",
"reswords",
"arg",
"endless_arg",
"relop",
"rel_expr",
2972 "lex_ctxt",
"begin_defined",
"after_rescue",
"arg_value",
"aref_args",
2973 "arg_rhs",
"paren_args",
"opt_paren_args",
"opt_call_args",
"call_args",
2974 "command_args",
"$@13",
"block_arg",
"opt_block_arg",
"args",
2975 "arg_splat",
"mrhs_arg",
"mrhs",
"primary",
"$@14",
"$@15",
"@16",
"@17",
2976 "$@18",
"$@19",
"$@20",
"$@21",
"$@22",
"primary_value",
"k_begin",
2977 "k_if",
"k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
2978 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
2979 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"k_yield",
"then",
2980 "do",
"if_tail",
"opt_else",
"for_var",
"f_marg",
"f_marg_list",
2981 "f_margs",
"f_rest_marg",
"f_any_kwrest",
"f_eq",
"$@23",
2982 "block_args_tail",
"opt_block_args_tail",
"excessed_comma",
2983 "block_param",
"opt_block_param",
"block_param_def",
"opt_bv_decl",
2984 "bv_decls",
"bvar",
"max_numparam",
"numparam",
"lambda",
"@24",
"$@25",
2985 "f_larglist",
"lambda_body",
"$@26",
"do_block",
"block_call",
2986 "method_call",
"brace_block",
"brace_body",
"@27",
"do_body",
"@28",
2987 "case_args",
"case_body",
"cases",
"p_pvtbl",
"p_pktbl",
"p_in_kwarg",
2988 "p_case_body",
"$@29",
"p_cases",
"p_top_expr",
"p_top_expr_body",
2989 "p_expr",
"p_as",
"p_alt",
"p_lparen",
"p_lbracket",
"p_expr_basic",
2990 "$@30",
"p_args",
"p_args_head",
"p_args_tail",
"p_find",
"p_rest",
2991 "p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
"p_kw_label",
2992 "p_kwrest",
"p_kwnorest",
"p_any_kwrest",
"p_value",
"p_primitive",
2993 "p_variable",
"p_var_ref",
"p_expr_ref",
"p_const",
"opt_rescue",
2994 "exc_list",
"exc_var",
"opt_ensure",
"literal",
"strings",
"string",
2995 "string1",
"xstring",
"regexp",
"words_sep",
"words",
"word_list",
2996 "word",
"symbols",
"symbol_list",
"qwords",
"qsymbols",
"qword_list",
2997 "qsym_list",
"string_contents",
"xstring_contents",
"regexp_contents",
2998 "string_content",
"@31",
"@32",
"@33",
"@34",
"string_dend",
2999 "string_dvar",
"symbol",
"ssym",
"sym",
"dsym",
"numeric",
3000 "simple_numeric",
"nonlocal_var",
"user_variable",
"keyword_variable",
3001 "var_ref",
"var_lhs",
"backref",
"superclass",
"$@35",
3002 "f_opt_paren_args",
"f_paren_args",
"f_arglist",
"@36",
"args_tail",
3003 "opt_args_tail",
"f_args",
"args_forward",
"f_bad_arg",
"f_norm_arg",
3004 "f_arg_asgn",
"f_arg_item",
"f_arg",
"f_label",
"f_kw",
"f_block_kw",
3005 "f_block_kwarg",
"f_kwarg",
"kwrest_mark",
"f_no_kwarg",
"f_kwrest",
3006 "f_opt",
"f_block_opt",
"f_block_optarg",
"f_optarg",
"restarg_mark",
3007 "f_rest_arg",
"blkarg_mark",
"f_block_arg",
"opt_f_block_arg",
3008 "singleton",
"$@37",
"assoc_list",
"assocs",
"assoc",
"operation",
3009 "operation2",
"operation3",
"dot_or_colon",
"call_op",
"call_op2",
3010 "opt_terms",
"opt_nl",
"rparen",
"rbracket",
"rbrace",
"trailer",
"term",
3011 "terms",
"none", YY_NULLPTR
3015yysymbol_name (yysymbol_kind_t yysymbol)
3017 return yytname[yysymbol];
3021#define YYPACT_NINF (-1088)
3023#define yypact_value_is_default(Yyn) \
3024 ((Yyn) == YYPACT_NINF)
3026#define YYTABLE_NINF (-784)
3028#define yytable_value_is_error(Yyn) \
3029 ((Yyn) == YYTABLE_NINF)
3033static const yytype_int16 yypact[] =
3035 -1088, 141, 4978, -1088, -1088, -1088, -1088, -1088, 10235, -1088,
3036 -1088, -1088, -1088, -1088, -1088, -1088, 11055, 11055, -1088, -1088,
3037 -1088, -1088, 6200, -1088, -1088, -1088, -1088, 527, 10081, 50,
3038 222, -1088, -1088, -1088, -1088, 5576, 6356, -1088, -1088, 5732,
3039 -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, 12507, 12507,
3040 12507, 12507, 427, 8462, 8622, 11539, 11781, 10537, -1088, 9927,
3041 -1088, -1088, -1088, 336, 336, 336, 336, 1285, 12628, 12507,
3042 -1088, 299, -1088, -1088, 1317, -1088, 485, 37, 37, -1088,
3043 -1088, 142, 480, 398, -1088, 406, 13112, -1088, 444, 1944,
3044 957, 57, 659, -1088, 10934, 10934, -1088, -1088, 9096, 13231,
3045 13350, 13469, 9772, 11055, 6824, -1088, 593, 97, -1088, -1088,
3046 476, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088,
3047 -1088, -1088, -1088, -1088, 85, 561, -1088, 495, 645, -1088,
3048 -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -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, 446, -1088, -1088,
3056 -1088, -1088, -1088, -1088, 496, 12507, 581, 8622, 12507, 12507,
3057 12507, -1088, 12507, 37, 37, -1088, 562, 5702, 599, -1088,
3058 -1088, 556, -1088, 763, 69, 71, 632, 108, 610, -1088,
3059 -1088, 11176, -1088, -1088, 11055, 9651, -1088, 12749, 823, -1088,
3060 606, -1088, 8782, -1088, -1088, -1088, -1088, -1088, 616, 142,
3061 -1088, 769, -1088, 626, 762, 5390, 5390, 667, -1088, 8462,
3062 661, 299, -1088, 1317, 50, 710, -1088, -1088, 688, 240,
3063 369, -1088, 599, 699, 369, -1088, 50, 794, 1285, 13588,
3064 702, 702, 718, -1088, 793, 830, 843, 853, -1088, -1088,
3065 73, -1088, -1088, 687, 858, 852, -1088, 724, 724, 724,
3066 724, 801, -1088, -1088, -1088, -1088, -1088, -1088, -1088, 9379,
3067 786, 10934, 10934, 10934, 10934, -1088, 12749, 12749, 2194, 819,
3068 835, -1088, 2194, -1088, 836, -1088, -1088, -1088, -1088, 866,
3069 -1088, -1088, -1088, -1088, -1088, -1088, -1088, 8462, 10675, 834,
3070 -1088, -1088, 12507, 12507, 12507, 12507, 12507, -1088, -1088, 12507,
3071 12507, 12507, 12507, 12507, 12507, 12507, 12507, -1088, 12507, -1088,
3072 -1088, 12507, 12507, 12507, 12507, 12507, 12507, 12507, 12507, 12507,
3073 12507, -1088, -1088, 4666, 11055, 5066, 7608, -1088, 485, 169,
3074 169, 8340, 10934, 8340, 299, -1088, 832, 942, -1088, -1088,
3075 879, 979, 91, 113, 127, 697, 732, 10934, 493, -1088,
3076 871, 888, -1088, -1088, -1088, -1088, 119, 347, 371, 378,
3077 466, 569, 576, 693, 700, -1088, -1088, -1088, -1088, 767,
3078 -1088, 9530, -1088, -1088, -1088, 15330, -1088, -1088, -1088, -1088,
3079 -1088, -1088, 318, -1088, -1088, -1088, 698, 870, 878, -1088,
3080 12507, 11297, -1088, -1088, 13944, 11055, 14043, -1088, -1088, 11660,
3081 -1088, 12507, 50, -1088, 863, 50, 868, -1088, -1088, 83,
3082 896, -1088, -1088, -1088, -1088, -1088, 10235, -1088, -1088, 12507,
3083 875, 14142, 14043, -1088, 222, 50, -1088, -1088, 9218, 882,
3084 897, -1088, 11539, -1088, -1088, 11781, -1088, -1088, -1088, 606,
3085 914, -1088, -1088, 906, -1088, 13588, 14241, 11055, 14340, -1088,
3086 -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088,
3087 -1088, 930, 117, 953, 331, 12507, -1088, -1088, 8942, -1088,
3088 -1088, -1088, -1088, -1088, 10813, -1088, -1088, -1088, -1088, -1088,
3089 -1088, -1088, -1088, -1088, -1088, 1150, -1088, -1088, -1088, -1088,
3090 -1088, 908, -1088, -1088, 50, -1088, -1088, -1088, 945, -1088,
3091 910, 12507, -1088, 927, 158, -1088, -1088, -1088, 931, 1033,
3092 932, 1041, -1088, 12870, 7608, 299, 12870, 7608, 941, -1088,
3093 -1088, -1088, 156, -1088, 156, 11902, 50, 13588, 944, -1088,
3094 11902, -1088, 762, 4760, 4760, 4760, 4760, 5858, 4273, 4760,
3095 4760, 5390, 5390, 631, 631, -1088, 5546, 642, 642, 1120,
3096 326, 326, 762, 762, 762, 1458, 1458, 6980, 5888, 7292,
3097 6044, -1088, -1088, 616, -1088, 50, 955, 808, -1088, 929,
3098 -1088, -1088, 6512, 156, -1088, -1088, 7730, 1084, 8096, 156,
3099 320, 156, 1081, 1094, 136, 14439, 11055, 14538, -1088, -1088,
3100 -1088, 914, -1088, -1088, -1088, 14637, 11055, 14736, 7608, 12749,
3101 -1088, -1088, -1088, 50, -1088, -1088, -1088, 1852, 12628, 12628,
3102 10235, 12507, 12991, 12991, 12507, -1088, 599, -1088, -1088, 610,
3103 5420, 6668, 50, 363, 412, 12507, 12507, -1088, -1088, 11418,
3104 -1088, 11660, -1088, -1088, -1088, 12749, 5702, -1088, 416, 616,
3105 616, 12507, -1088, 595, -1088, -1088, 369, 13588, 906, 486,
3106 657, 50, 264, 552, -1088, -1088, 1132, -1088, 67, -1088,
3107 336, -1088, -1088, 67, 336, -1088, 762, 959, -1088, 1150,
3108 1274, -1088, 961, 50, 963, -1088, 36, -1088, -1088, -1088,
3109 12507, 989, 2194, -1088, -1088, 461, -1088, -1088, -1088, 2194,
3110 -1088, -1088, 2479, -1088, -1088, 527, 1070, -1088, 5702, 1082,
3111 156, -1088, 1070, 1082, 156, -1088, -1088, 972, -1088, -1088,
3112 -1088, -1088, -1088, 12507, -1088, 973, 974, 1092, -1088, -1088,
3113 906, 13588, -1088, -1088, 1096, 1008, 2581, -1088, -1088, -1088,
3114 934, 428, -1088, -1088, 1009, -1088, -1088, -1088, -1088, 866,
3115 992, 943, 11297, -1088, -1088, -1088, -1088, 866, -1088, -1088,
3116 1140, 671, -1088, 1141, -1088, -1088, -1088, -1088, -1088, -1088,
3117 1094, 156, -1088, 12023, 156, 233, 254, 50, 166, 175,
3118 8340, 299, 10934, 7608, 807, 657, -1088, 50, 156, 83,
3119 10389, -1088, 97, 480, -1088, 6947, -1088, -1088, -1088, -1088,
3120 -1088, 527, -1088, -1088, -1088, 492, -1088, -1088, 50, 1002,
3121 83, -1088, -1088, -1088, 563, 1615, -1088, -1088, -1088, -1088,
3122 724, -1088, 724, 724, 724, -1088, 50, -1088, 1150, -1088,
3123 1188, -1088, -1088, -1088, -1088, -1088, 1004, 1006, -1088, 1111,
3124 908, 1016, -1088, 1017, -1088, 1016, 12870, -1088, -1088, -1088,
3125 -1088, -1088, -1088, -1088, 1018, 12144, -1088, 906, -1088, -1088,
3126 -1088, 14835, 11055, 14934, -1088, -1088, 12507, 12628, 12628, 1024,
3127 -1088, -1088, -1088, 12628, 12628, -1088, -1088, 12265, 1141, -1088,
3128 -1088, -1088, 8340, 10934, 156, -1088, -1088, 156, -1088, -1088,
3129 156, -1088, 12507, -1088, 109, -1088, 214, 156, 7608, 299,
3130 156, -1088, -1088, -1088, -1088, -1088, -1088, 12991, 12507, 12507,
3131 -1088, 12507, 12507, -1088, 11660, -1088, 2194, -1088, -1088, 5294,
3132 -1088, -1088, 1026, 1029, 2194, -1088, 2479, -1088, -1088, 2479,
3133 -1088, 2479, -1088, -1088, 1070, 1082, 12507, 12507, 1045, 1045,
3134 12507, 1036, 10813, 10813, 12628, 12507, 7136, 7448, 50, 500,
3135 504, 4476, 4476, 5702, -1088, -1088, -1088, -1088, -1088, 12628,
3136 -1088, -1088, -1088, -1088, 973, -1088, 1091, -1088, 1185, -1088,
3137 -1088, 169, -1088, -1088, -1088, -1088, -1088, 12386, 7852, -1088,
3138 156, -1088, -1088, 12507, 50, 98, 95, 1188, 1188, 1016,
3139 1044, 1016, 1016, 5702, 5702, 1874, 8942, -1088, -1088, 7608,
3140 1018, -1088, -1088, 5702, 511, -1088, -1088, -1088, 2448, 2448,
3141 741, -1088, 4166, 14, 1148, -1088, 1078, -1088, -1088, 309,
3142 -1088, 1063, -1088, -1088, -1088, 1053, -1088, 1055, -1088, 1686,
3143 -1088, -1088, -1088, -1088, 682, -1088, -1088, -1088, 45, -1088,
3144 -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, 447, -1088,
3145 -1088, -1088, 13707, 169, -1088, -1088, 8340, -1088, -1088, 8218,
3146 7730, 4476, 12507, -1088, 608, -1088, 1056, 1058, -1088, 8942,
3147 -1088, -1088, -1088, -1088, 1029, -1088, 2479, -1088, -1088, -1088,
3148 908, -1088, 50, 1087, 945, 1074, 13826, -1088, 1077, -1088,
3149 1080, 1099, -1088, -1088, -1088, -1088, -1088, -1088, -1088, 1686,
3150 324, 50, 13900, -1088, 50, 1100, -1088, -1088, 1086, -1088,
3151 -1088, 902, -1088, 10934, -1088, 1197, 13900, 1686, 1686, 958,
3152 1156, 2448, 2448, 741, 274, 739, 4476, 4476, -1088, 1195,
3153 -1088, 948, 188, 192, 200, 7608, -1088, -1088, 671, 169,
3154 831, -1088, -1088, -1088, -1088, -1088, 1280, 7608, 1115, 1016,
3155 -1088, 1129, -1088, 13826, 1539, -1088, -1088, 1217, 951, 461,
3156 -1088, 1539, -1088, 1472, -1088, 35, -1088, 1156, 1121, 1123,
3157 -1088, -1088, -1088, -1088, -1088, 50, -1088, -1088, 1124, -1088,
3158 1128, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088,
3159 -1088, -1088, 50, 50, 50, 50, 50, 50, 218, 15033,
3160 11055, 15132, 1140, 1185, -1088, -1088, 10934, 10934, -1088, 467,
3161 -1088, -1088, 156, -1088, -1088, -1088, 951, -1088, 1134, 1137,
3162 -1088, 15231, -1088, 908, 1138, -1088, 1146, 1138, -1088, 1686,
3163 -1088, 958, -1088, 1686, 13900, 758, -1088, -1088, -1088, -1088,
3164 -1088, -1088, 121, 201, 50, 223, 238, -1088, -1088, 7974,
3165 -1088, -1088, 1280, -1088, -1088, 1539, -1088, 1472, -1088, 1118,
3166 1130, -1088, 1472, -1088, 1472, -1088, -1088, 1149, 50, 1149,
3167 -1088, -1088, 253, 417, -1088, 1138, 1155, 1138, 1138, 1686,
3168 -1088, -1088, -1088, -1088, -1088, 1472, -1088, -1088, -1088, 1138,
3175static const yytype_int16 yydefact[] =
3177 2, 0, 0, 1, 44, 381, 382, 383, 0, 374,
3178 375, 376, 379, 24, 24, 24, 369, 370, 371, 372,
3179 393, 394, 301, 658, 657, 659, 660, 772, 0, 772,
3180 0, 783, 662, 661, 663, 756, 758, 652, 651, 757,
3181 653, 647, 648, 649, 650, 600, 668, 669, 0, 0,
3182 0, 0, 0, 0, 0, 783, 783, 110, 455, 622,
3183 622, 624, 626, 0, 0, 0, 0, 0, 0, 0,
3184 3, 770, 6, 24, 8, 38, 43, 677, 677, 61,
3185 81, 301, 80, 0, 98, 0, 102, 112, 0, 70,
3186 250, 266, 0, 329, 0, 0, 77, 77, 0, 0,
3187 0, 0, 0, 338, 301, 348, 82, 346, 318, 319,
3188 599, 601, 320, 321, 322, 324, 323, 325, 598, 639,
3189 640, 597, 645, 656, 664, 665, 326, 0, 327, 85,
3190 5, 191, 202, 192, 215, 188, 208, 198, 197, 218,
3191 219, 213, 196, 195, 190, 216, 220, 221, 200, 189,
3192 203, 207, 209, 201, 194, 210, 217, 212, 211, 204,
3193 214, 199, 187, 206, 205, 186, 193, 184, 185, 181,
3194 182, 183, 141, 143, 142, 176, 177, 172, 154, 155,
3195 156, 163, 160, 162, 157, 158, 178, 179, 164, 165,
3196 169, 173, 159, 161, 151, 152, 153, 166, 167, 168,
3197 170, 171, 174, 175, 180, 146, 148, 31, 144, 145,
3198 147, 377, 378, 380, 0, 752, 0, 0, 312, 755,
3199 304, 622, 0, 677, 677, 296, 0, 279, 307, 96,
3200 300, 783, 308, 0, 664, 665, 0, 327, 783, 748,
3201 97, 783, 474, 93, 0, 772, 773, 0, 0, 26,
3202 783, 10, 0, 9, 25, 276, 369, 370, 475, 0,
3203 244, 0, 338, 341, 245, 235, 236, 335, 22, 0,
3204 0, 770, 19, 21, 772, 100, 18, 331, 0, 772,
3205 772, 280, 0, 0, 772, 746, 772, 0, 0, 0,
3206 677, 677, 108, 373, 0, 118, 119, 126, 453, 642,
3207 0, 641, 643, 0, 0, 0, 606, 609, 618, 614,
3208 620, 646, 65, 256, 257, 779, 780, 4, 781, 0,
3209 0, 0, 0, 0, 0, 783, 0, 0, 700, 0,
3210 676, 365, 700, 674, 0, 367, 384, 479, 468, 86,
3211 481, 345, 385, 481, 464, 783, 114, 0, 106, 103,
3212 783, 68, 0, 0, 0, 0, 0, 272, 273, 0,
3213 0, 0, 0, 233, 234, 0, 0, 66, 0, 270,
3214 271, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3215 0, 766, 767, 0, 783, 0, 0, 76, 75, 0,
3216 0, 0, 0, 0, 770, 355, 771, 0, 405, 404,
3217 0, 0, 664, 665, 327, 136, 137, 0, 0, 139,
3218 672, 0, 664, 665, 327, 363, 211, 204, 214, 199,
3219 181, 182, 183, 141, 142, 744, 72, 71, 743, 0,
3220 95, 772, 94, 769, 768, 0, 347, 602, 783, 783,
3221 149, 751, 335, 311, 754, 303, 0, 0, 0, 783,
3222 0, 0, 297, 306, 0, 783, 0, 783, 783, 0,
3223 298, 701, 772, 292, 783, 772, 783, 291, 302, 772,
3224 0, 344, 64, 28, 30, 29, 0, 783, 277, 0,
3225 0, 0, 0, 783, 0, 772, 333, 17, 0, 99,
3226 0, 336, 778, 777, 281, 778, 283, 337, 747, 0,
3227 125, 646, 116, 111, 676, 0, 0, 783, 0, 454,
3228 628, 644, 631, 629, 623, 603, 604, 625, 605, 627,
3229 607, 0, 0, 0, 0, 0, 782, 7, 0, 32,
3230 33, 34, 35, 278, 0, 62, 63, 707, 704, 703,
3231 702, 705, 713, 722, 701, 0, 734, 723, 738, 737,
3232 733, 783, 724, 699, 772, 683, 706, 708, 709, 711,
3233 685, 715, 720, 783, 726, 418, 417, 731, 685, 736,
3234 685, 740, 682, 0, 0, 0, 0, 0, 0, 453,
3235 479, 87, 0, 453, 0, 0, 772, 0, 104, 115,
3236 0, 492, 242, 249, 251, 252, 253, 260, 261, 254,
3237 255, 231, 232, 258, 259, 492, 772, 246, 247, 248,
3238 237, 238, 239, 240, 241, 274, 275, 756, 758, 757,
3239 760, 473, 759, 301, 471, 772, 783, 756, 758, 757,
3240 760, 472, 301, 0, 783, 396, 0, 395, 0, 0,
3241 0, 0, 353, 0, 335, 0, 783, 0, 77, 361,
3242 136, 137, 138, 670, 359, 0, 783, 0, 0, 0,
3243 764, 765, 73, 772, 340, 756, 757, 301, 0, 0,
3244 0, 0, 0, 0, 0, 750, 309, 305, 310, 783,
3245 756, 757, 772, 756, 757, 0, 0, 749, 286, 293,
3246 288, 295, 343, 774, 27, 0, 262, 11, 334, 0,
3247 783, 0, 23, 101, 20, 332, 772, 0, 109, 761,
3248 124, 772, 756, 757, 24, 632, 0, 608, 0, 611,
3249 0, 616, 613, 0, 0, 617, 243, 0, 36, 0,
3250 416, 408, 410, 772, 413, 406, 0, 681, 742, 675,
3251 0, 0, 0, 692, 714, 0, 680, 558, 725, 0,
3252 695, 735, 0, 697, 739, 772, 52, 55, 267, 264,
3253 0, 678, 53, 265, 0, 477, 454, 0, 391, 392,
3254 478, 454, 463, 312, 39, 314, 0, 42, 313, 113,
3255 107, 0, 60, 45, 58, 0, 284, 307, 222, 40,
3256 0, 327, 490, 490, 0, 783, 783, 479, 470, 90,
3257 0, 476, 293, 783, 783, 290, 469, 88, 289, 330,
3258 783, 783, 397, 783, 351, 399, 78, 398, 352, 492,
3259 0, 0, 388, 0, 0, 761, 334, 772, 756, 757,
3260 0, 0, 0, 0, 136, 137, 140, 772, 0, 772,
3261 0, 339, 465, 83, 46, 284, 223, 54, 230, 150,
3262 753, 772, 299, 783, 783, 476, 783, 783, 772, 783,
3263 772, 229, 282, 117, 476, 700, 633, 630, 637, 638,
3264 610, 612, 619, 615, 621, 37, 772, 415, 0, 710,
3265 0, 741, 727, 420, 684, 712, 685, 685, 721, 726,
3266 783, 685, 732, 685, 709, 685, 0, 783, 783, 366,
3267 368, 24, 84, 24, 317, 0, 783, 105, 783, 783,
3268 783, 0, 783, 0, 491, 491, 0, 0, 0, 0,
3269 91, 775, 783, 0, 0, 89, 386, 783, 15, 589,
3270 390, 389, 0, 0, 0, 400, 402, 0, 79, 490,
3271 0, 357, 0, 483, 0, 356, 476, 0, 0, 0,
3272 0, 476, 364, 745, 74, 466, 467, 0, 0, 0,
3273 783, 0, 0, 287, 294, 342, 700, 456, 459, 0,
3274 407, 409, 411, 414, 0, 688, 0, 690, 679, 0,
3275 696, 0, 693, 698, 57, 269, 0, 0, 783, 783,
3276 312, 315, 0, 0, 0, 0, 756, 757, 772, 756,
3277 757, 0, 0, 263, 51, 227, 50, 228, 92, 0,
3278 48, 225, 49, 226, 590, 591, 783, 592, 783, 12,
3279 403, 0, 349, 350, 491, 354, 484, 0, 0, 358,
3280 0, 671, 360, 0, 772, 0, 0, 0, 0, 685,
3281 685, 685, 685, 56, 268, 772, 0, 444, 443, 0,
3282 316, 41, 59, 285, 476, 581, 587, 554, 0, 0,
3283 0, 491, 772, 491, 542, 622, 0, 580, 69, 500,
3284 506, 508, 510, 504, 503, 538, 505, 547, 550, 553,
3285 559, 560, 549, 513, 561, 514, 566, 567, 568, 571,
3286 572, 573, 574, 575, 577, 576, 578, 579, 557, 67,
3287 47, 224, 0, 0, 594, 387, 0, 16, 596, 0,
3288 0, 0, 0, 485, 783, 362, 0, 447, 461, 0,
3289 457, 636, 635, 634, 412, 689, 0, 686, 691, 694,
3290 783, 442, 772, 0, 709, 426, 717, 718, 783, 729,
3291 426, 426, 424, 480, 482, 569, 570, 137, 585, 0,
3292 530, 772, 531, 535, 772, 0, 525, 783, 0, 528,
3293 541, 0, 582, 0, 583, 0, 501, 0, 0, 548,
3294 552, 564, 565, 0, 491, 491, 0, 0, 556, 0,
3295 593, 0, 664, 665, 327, 0, 595, 13, 783, 0,
3296 497, 486, 488, 489, 487, 458, 0, 0, 0, 685,
3297 423, 0, 445, 0, 427, 435, 433, 0, 716, 0,
3298 422, 0, 438, 0, 440, 772, 523, 545, 533, 532,
3299 524, 536, 526, 776, 555, 772, 507, 502, 538, 509,
3300 539, 543, 622, 551, 546, 562, 563, 586, 512, 522,
3301 511, 518, 772, 772, 772, 772, 772, 772, 335, 0,
3302 783, 0, 783, 783, 401, 493, 0, 0, 451, 772,
3303 449, 452, 0, 460, 687, 446, 728, 425, 426, 426,
3304 335, 0, 719, 783, 426, 730, 426, 426, 529, 0,
3305 537, 0, 584, 0, 0, 0, 515, 516, 517, 519,
3306 520, 521, 761, 334, 772, 756, 757, 588, 14, 0,
3307 498, 499, 0, 448, 462, 0, 430, 0, 432, 761,
3308 334, 421, 0, 439, 0, 436, 441, 534, 772, 539,
3309 540, 544, 476, 783, 450, 426, 426, 426, 426, 0,
3310 527, 495, 496, 494, 431, 0, 428, 434, 437, 426,
3315static const yytype_int16 yypgoto[] =
3317 -1088, -1088, -1088, 1028, -1088, 976, -1088, 812, -540, -1088,
3318 -1088, -1088, -40, -1088, 817, -1088, 8, -1088, 9, -1088,
3319 -49, -510, -494, -26, -1088, -1088, 471, 2739, 3102, -1088,
3320 -89, -62, -1088, -1088, -60, -1088, -620, 1245, -14, 1213,
3321 -140, -7, -37, -1088, -425, 44, 3555, -392, 1214, -28,
3322 -10, -1088, -1088, 2, -1088, 4276, -500, 1226, -1088, 99,
3323 840, 340, 1165, -1088, 617, -17, 653, -372, 46, -39,
3324 -1088, -381, -212, 12, -401, -1088, -551, -13, -1088, -1088,
3325 -1088, -1088, -1088, -1088, -1088, -1088, -1088, 1125, -1088, -1088,
3326 -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088,
3327 -1088, -1088, -1088, 394, -1088, 32, 1883, 2367, -363, -1088,
3328 137, -789, -1088, -766, -767, 604, 463, -900, 190, -1088,
3329 304, 131, -1088, -1088, 361, -1088, -894, -1088, 49, -419,
3330 33, 1221, -1088, -1088, -1088, -1088, -1088, 509, -1088, -1088,
3331 -82, -478, -1088, 1011, -1088, -1088, -741, -1088, -662, -838,
3332 -495, 39, -1088, -1088, -1088, -885, -659, -1088, -1088, -1088,
3333 -1088, 196, -1088, -256, -1088, -637, -656, -968, -245, -1024,
3334 -721, -1088, 195, -1088, -1088, -854, 198, -1088, -468, 203,
3335 -1088, -1088, -1088, 122, -1088, -1088, 112, 1427, 1787, -1088,
3336 1261, 1866, 2213, 28, 2585, -1088, 850, 2724, -1088, 2820,
3337 2902, -1088, -1088, -56, -1088, -1088, -248, -1088, -1088, -1088,
3338 -1088, -1088, -1088, 25, -1088, -1088, -1088, -1088, 18, -52,
3339 3202, -2, 1273, 3772, 2516, -1088, -1088, 62, 641, 41,
3340 -1088, -287, 267, -285, -187, -817, -336, -311, -699, -599,
3341 -370, 633, 172, -1088, -1088, -663, -1088, -709, -641, -1087,
3342 178, 637, -1088, -617, -1088, 110, -531, -1088, -1088, -1088,
3343 3, -399, 170, -345, -1088, -1088, -91, -1088, -27, 433,
3344 262, 276, 68, -177, -23, 43, 103
3348static const yytype_int16 yydefgoto[] =
3350 0, 1, 2, 70, 71, 72, 252, 253, 633, 1109,
3351 1253, 1018, 634, 271, 272, 484, 211, 73, 273, 476,
3352 75, 756, 783, 76, 605, 591, 426, 223, 224, 840,
3353 389, 391, 392, 938, 79, 80, 581, 259, 82, 83,
3354 274, 84, 85, 86, 503, 87, 226, 409, 410, 205,
3355 206, 207, 670, 620, 209, 89, 759, 379, 90, 533,
3356 479, 534, 228, 278, 788, 621, 806, 462, 463, 243,
3357 244, 230, 452, 626, 232, 777, 778, 91, 386, 490,
3358 820, 643, 833, 831, 658, 574, 577, 261, 93, 94,
3359 95, 96, 97, 98, 99, 100, 101, 102, 340, 343,
3360 927, 1106, 823, 932, 933, 770, 262, 263, 636, 816,
3361 934, 935, 401, 731, 732, 733, 734, 551, 740, 741,
3362 1267, 1205, 1206, 1132, 1046, 1047, 1116, 1259, 1260, 509,
3363 714, 105, 298, 1035, 967, 1120, 1197, 344, 106, 107,
3364 341, 578, 579, 582, 583, 944, 824, 1194, 914, 1001,
3365 792, 821, 1299, 1333, 1189, 1068, 1217, 1070, 1071, 1176,
3366 1177, 1072, 1281, 1151, 1152, 1153, 1074, 1075, 1230, 1155,
3367 1076, 1077, 1078, 1079, 1080, 552, 1082, 1083, 1084, 1085,
3368 1086, 1087, 1088, 928, 1016, 1103, 1107, 108, 109, 110,
3369 111, 112, 113, 307, 114, 521, 718, 115, 523, 116,
3370 117, 522, 524, 300, 304, 305, 514, 716, 715, 866,
3371 969, 1123, 867, 118, 119, 301, 120, 121, 122, 123,
3372 234, 235, 126, 236, 237, 654, 832, 329, 330, 331,
3373 332, 884, 743, 554, 555, 556, 557, 894, 559, 560,
3374 561, 562, 1137, 1138, 563, 564, 565, 566, 567, 1139,
3375 1140, 568, 569, 570, 571, 572, 737, 429, 659, 283,
3376 466, 239, 129, 699, 624, 662, 657, 435, 317, 470,
3377 471, 801, 1159, 494, 637, 396, 255
3383static const yytype_int16 yytable[] =
3385 125, 385, 225, 225, 303, 242, 390, 302, 312, 394,
3386 208, 74, 625, 270, 277, 434, 652, 558, 249, 238,
3387 238, 558, 212, 213, 937, 436, 460, 638, 231, 231,
3388 208, 299, 746, 210, 760, 393, 890, 764, 623, 789,
3389 632, 553, 339, 885, 293, 553, 275, 575, 318, 349,
3390 678, 125, 125, 210, 465, 296, 517, 519, 280, 284,
3391 687, 208, 229, 240, 338, 432, 762, 279, 388, 388,
3392 677, 395, 388, 293, 427, 318, 763, 1002, 677, 940,
3393 708, 320, 889, 682, 296, 311, 293, 293, 293, 225,
3394 667, 678, 308, 309, 310, 1121, 687, 403, 413, 413,
3395 413, 292, 767, 496, 208, 130, 238, 498, 892, 623,
3396 793, 632, 971, 973, 319, 231, -127, 1099, 838, 335,
3397 326, 327, 635, 336, 1275, 887, -373, 1118, 1219, 485,
3398 254, 915, 893, 510, -131, 711, 1165, 700, -128, 510,
3399 334, 3, 456, 1173, 1231, 1130, 548, 1081, 1081, 430,
3400 891, 1133, -135, 895, -373, -373, 276, 276, 281, 285,
3401 766, -134, 780, 700, 771, 446, 768, -772, 336, -666,
3402 482, -667, -783, 763, 844, 847, 246, 270, 549, 920,
3403 333, 333, 635, 720, 1218, -666, 1111, 925, -658, 512,
3404 513, -130, 747, 511, 328, 512, 513, 246, 1228, 1174,
3405 -132, -127, 1175, 508, -127, -128, -128, 586, 458, 735,
3406 748, -373, 246, -135, -133, 125, 1122, -658, 1275, 469,
3407 -127, 472, 1119, 1149, 769, 1157, 1190, 225, 306, 270,
3408 225, -134, 529, 530, 531, 532, -130, 721, 1201, -129,
3409 -118, 242, 338, -135, 487, 246, -118, 238, 318, 337,
3410 125, -132, 502, 464, 460, 1231, 231, 1081, -131, 1231,
3411 1321, 74, 275, 836, 1027, 335, -129, 125, -119, 315,
3412 1124, 316, 971, 719, 827, 719, 293, 1024, -756, -133,
3413 885, -131, -126, -131, 837, 447, 448, 296, 678, -121,
3414 468, -125, 687, 950, 337, 388, 388, 388, 388, 241,
3415 535, 536, 700, 640, 1130, 1321, 501, 270, 677, 647,
3416 677, 1130, 700, 1130, 488, 1081, 1320, 125, 649, 919,
3417 276, -121, 1081, 1081, 939, 1192, 333, 333, 74, 315,
3418 -123, 316, 335, 892, 453, 293, 1238, 1240, 1098, 1098,
3419 275, 453, 1069, 1069, 467, 125, 296, 815, -127, 478,
3420 -127, 639, -128, 641, -128, 130, 907, 1040, -757, 978,
3421 -135, -133, -135, -133, 1073, 1073, 388, 642, 631, -120,
3422 225, 318, 276, 1193, 251, 1039, 1015, 1041, -134, 1261,
3423 -134, 388, 1042, -130, 125, -130, 984, 630, -122, 125,
3424 -756, 125, 588, 735, 877, 492, 985, 724, -132, -121,
3425 -132, 678, 246, 1150, 352, 1130, 1154, 1130, 1030, -124,
3426 1165, -757, 1130, -129, 1130, -129, -657, 225, 483, -121,
3427 1170, 677, -121, 1004, 1006, 1165, -121, 1081, 1141, 1010,
3428 1012, 558, 931, -772, 238, 1130, 246, 630, 558, 631,
3429 -659, 225, 819, 231, 585, -657, 1135, -660, 1098, 590,
3430 276, 725, 1069, -134, 679, 1244, 1247, 985, 630, 315,
3431 247, 316, 250, 856, 1166, 631, 694, 852, 502, -659,
3432 871, 376, 377, 378, 1073, 871, -660, 663, 208, -545,
3433 315, 747, 316, 267, 630, 1261, 125, 467, 727, 276,
3434 1215, 631, 293, 225, 276, 706, 276, 306, -130, 1178,
3435 1273, 210, 858, 296, 678, 885, 1098, 1150, 342, 1144,
3436 630, -122, 857, 1098, 1098, 1100, 854, 1150, 1150, 542,
3437 1243, 1246, 326, 327, 495, 774, 125, 1199, 439, 862,
3438 784, 246, 125, 345, 1331, -662, 489, 668, 669, 543,
3439 998, 782, 735, 728, 735, 650, 889, -132, 674, 651,
3440 502, -133, 761, 622, 558, 622, 685, 686, 467, 757,
3441 1318, 346, 757, -135, -662, 687, 623, 453, 632, 453,
3442 547, 548, 125, -757, 293, 125, 478, -123, 553, 350,
3443 968, 1028, 701, 677, 799, 296, 830, 1269, -120, 60,
3444 1145, 1146, 960, 807, 1276, 438, 811, 776, 813, 1200,
3445 803, 440, 776, 549, 804, 622, 798, 1210, 784, 784,
3446 467, 922, 1274, 885, 1277, 805, 772, 817, 1098, 782,
3447 782, -122, 1302, 931, 622, 822, 622, -129, 843, 246,
3448 631, 276, 225, 839, 125, -130, 125, 442, -661, -132,
3449 631, -122, 225, -756, -122, -663, -129, 852, -122, 630,
3450 805, 622, 622, 245, 738, 558, 125, 1262, 1110, 630,
3451 849, -667, 381, 558, 868, 809, 738, -661, 1148, 860,
3452 863, 814, 208, 818, -663, 1136, 622, 276, 622, 553,
3453 276, 1034, 798, 805, 245, 930, 931, -123, 1326, 246,
3454 382, 433, 859, 664, 293, 210, -128, 449, -120, 913,
3455 450, 735, 735, 1235, 1236, 296, 1325, -123, 1327, 352,
3456 -123, 451, 493, 493, -123, 1328, -119, 493, -120, 499,
3457 352, -120, 865, -756, 688, -120, -334, 690, 381, 453,
3458 -99, 692, 457, 810, 1134, 808, 1339, 365, 366, 276,
3459 1185, 276, 1311, 949, 502, 439, 870, 703, 872, 467,
3460 -113, 873, 874, 510, -334, -334, 382, 383, -757, 467,
3461 955, 276, -654, 477, 510, 459, -654, 483, 293, -655,
3462 808, 1171, 1172, 241, 374, 375, 376, 377, 378, 296,
3463 -135, 1237, 453, 431, 373, 374, 375, 376, 377, 378,
3464 947, -654, 899, 650, -654, -654, 900, 1147, -655, 901,
3465 -126, -655, -134, 808, 903, 859, 388, 515, 948, 512,
3466 513, -334, 427, 384, -757, 622, 739, 622, 515, 486,
3467 512, 513, -125, 671, 510, 622, 1255, 622, 125, -655,
3468 -655, 125, 381, -761, 1136, 750, 660, 753, 381, 1136,
3469 352, 1136, 208, 1136, 1021, -98, 881, 491, 779, -756,
3470 500, -654, 497, 941, -756, 881, 945, 784, 784, 328,
3471 382, 454, 381, 784, 784, 661, 382, 481, 782, 782,
3472 952, 1256, 1257, 505, 782, 782, -761, 473, 1294, 525,
3473 512, 513, 757, 1224, -757, 520, -655, 474, 475, -757,
3474 382, 506, 1020, 1134, 917, 918, 631, -772, 225, -664,
3475 1134, 246, 923, 924, -761, -761, 700, 388, 803, 988,
3476 1227, 989, -665, 929, 936, 630, 936, 455, 510, 518,
3477 1242, 1245, -327, 455, 510, 841, 1031, -664, -664, 1036,
3478 125, 504, 504, 276, 784, 1136, 276, 1136, 528, 776,
3479 -665, -665, 1136, -130, 1136, 782, 125, 507, 381, 784,
3480 -327, -327, 958, 959, 573, 961, 962, 381, 855, -761,
3481 782, -761, 453, -121, -756, 1136, 1022, 125, 510, 1023,
3482 -673, 576, 1025, 580, 512, 513, 382, 645, 516, 1029,
3483 512, 513, 1032, -335, -664, 382, 655, 864, 1114, 589,
3484 125, 125, 526, 738, 1134, 879, 510, -665, 644, 1097,
3485 1097, 1051, 1052, 381, 648, 672, 1143, -327, 994, 1161,
3486 653, -335, -335, 673, 1164, 467, 1057, 381, 689, 510,
3487 381, 1009, 515, 691, 512, 513, 125, 1224, 697, 804,
3488 1017, 382, 911, 646, 1317, 276, 543, -113, 1319, 794,
3489 357, 358, 656, 922, 125, 382, 1249, 125, 382, 1271,
3490 717, 276, 512, 513, 693, 705, 1097, 1097, 800, 1033,
3491 1097, 707, 1115, 736, -132, 742, 1186, 547, -335, 1187,
3492 1188, 1232, 276, 722, 1225, 512, 513, 1097, -129, 1198,
3493 -419, 622, 745, 622, -123, 751, 749, 752, 912, 293,
3494 1251, 1048, 1048, 754, 765, 369, 370, 812, -120, 781,
3495 1183, 953, 1250, 946, 125, 656, 819, 125, 125, 1097,
3496 802, 822, 875, 951, 897, 800, 878, 125, 880, 1104,
3497 963, 1108, 965, 293, 883, 902, 898, 92, -307, 905,
3498 1162, 276, 37, 38, 413, 40, 906, 388, 970, 493,
3499 908, 233, 233, 909, 800, 1252, 916, 1097, 926, 276,
3500 1097, 921, 276, 975, 977, 1142, 931, 964, 980, 974,
3501 982, 976, 983, 748, 1097, 1097, 1097, 1300, 1301, 1097,
3502 1097, 979, 981, -311, 1097, 1097, 1285, 1008, 92, 92,
3503 1163, 1037, 294, 125, 1038, 1045, 37, 38, 896, 40,
3504 293, -309, 1102, 233, 1105, 125, 46, 47, 352, 1126,
3505 1160, 413, 537, 1167, 538, 539, 540, 541, 1168, 276,
3506 1169, 294, 276, 276, 1195, 365, 366, 936, 1196, 233,
3507 233, 282, 276, 233, 400, 411, 411, 1202, 233, 1204,
3508 388, 388, 1209, 738, 631, 1211, 225, 986, 987, 1223,
3509 537, 738, 538, 539, 540, 541, 992, 81, 993, 1055,
3510 995, 1248, 729, 630, 1213, 1221, 1222, 1165, 730, 1323,
3511 800, 81, 81, 374, 375, 376, 377, 378, 1263, 1265,
3512 800, 1212, 1214, 1270, 1054, -756, 1279, 1097, 1280, 1283,
3513 480, 1097, 1097, 1284, 957, 846, 848, -757, 276, 1305,
3514 729, 936, 1307, 1312, 1304, 527, 702, 125, 81, 81,
3515 276, 1314, 846, 848, 1329, 704, 1125, 1127, 1128, 1129,
3516 1335, 954, 398, 81, 1142, 415, 380, 695, 861, 881,
3517 842, 1142, 1019, 1142, 1203, 1254, 537, 1097, 538, 539,
3518 540, 541, 1258, 876, 538, 539, 540, 541, 1156, 81,
3519 81, 972, 92, 81, 41, 42, 43, 44, 81, 1131,
3520 1049, 1324, 956, 467, 584, 929, 1108, 321, 322, 323,
3521 324, 325, 1332, 1229, 1233, 1298, 233, 1234, 1226, 233,
3522 233, 437, 233, 723, 1297, 428, 738, 92, 888, 886,
3523 441, 1272, 1268, 443, 444, 445, 1330, 0, 0, 0,
3524 0, 0, 0, 0, 92, 0, 0, 0, 0, 1306,
3525 1308, 0, 276, 0, 0, 1313, 0, 1315, 1316, 0,
3526 0, 0, 0, 0, 294, 1142, 0, 1142, 0, 622,
3527 0, 622, 1142, 0, 1142, 0, 936, 1216, 0, 0,
3528 1220, 800, 0, 0, 0, 0, 0, 1241, 0, 0,
3529 0, 622, 0, 0, 92, 1142, 233, 233, 233, 233,
3530 1239, 233, 233, 0, 0, 0, 1334, 1336, 1337, 1338,
3531 0, 0, 81, 0, 0, 0, 1264, 1117, 0, 0,
3532 1340, 0, 92, 294, 0, 0, 0, 1278, 1117, 0,
3533 0, 0, 0, 0, 0, 0, 81, 1282, 0, 81,
3534 81, 0, 81, 0, 0, 800, 1158, 81, 0, 0,
3535 0, 0, 0, 0, 1286, 1287, 1288, 0, 0, 233,
3536 0, 92, 0, 0, 81, 0, 92, 233, 92, 0,
3537 0, 1289, 1290, 1291, 537, 0, 538, 539, 540, 541,
3538 542, 0, 233, 0, 1005, 1007, 352, 0, 0, 0,
3539 1011, 1013, 0, 0, 0, 0, 0, 0, 0, 0,
3540 543, 0, 0, 365, 366, 0, 233, 0, 0, 0,
3541 0, 0, 0, 0, 81, 1117, 81, 81, 81, 81,
3542 1322, 81, 81, 0, 545, 1005, 1007, 0, 1011, 1013,
3543 233, 547, 548, 0, 800, 0, 0, 800, 0, 0,
3544 0, 537, 81, 538, 539, 540, 541, 542, 371, 372,
3545 373, 374, 375, 376, 377, 378, 0, 800, 0, 0,
3546 0, 0, 0, 92, 549, 675, 676, 543, 0, 0,
3547 0, 0, 0, 0, 282, 0, 1101, 0, 0, 81,
3548 294, 81, 233, 0, 0, 0, 81, 81, 81, 0,
3549 0, 545, 0, 0, 0, 0, 0, 546, 547, 548,
3550 1101, 0, 81, 92, 0, 0, 0, 676, 0, 92,
3551 282, 0, 0, 0, 0, 0, 0, 537, 0, 538,
3552 539, 540, 541, 542, 0, 0, 81, 0, 800, 800,
3553 800, 549, 0, 0, 550, 0, 0, 0, 0, 0,
3554 0, 0, 1303, 543, 0, 0, 0, 0, 233, 92,
3555 81, 233, 92, 0, 0, 0, 0, 544, 0, 0,
3556 233, 0, 294, 0, 0, 790, 0, 545, 0, 23,
3557 24, 25, 26, 546, 547, 548, 744, 800, 0, 0,
3558 0, 0, 0, 81, 0, 32, 33, 34, 1055, 0,
3559 0, 0, 1056, 0, 0, 41, 42, 43, 44, 45,
3560 775, 1158, 81, 0, 0, 787, 0, 549, 0, 0,
3561 550, 92, 0, 92, 0, 0, 0, 0, 0, 0,
3562 0, 233, 966, 81, 0, 0, 0, 1058, 1059, 81,
3563 0, 233, 0, 92, 233, 1060, 0, 0, 1061, 0,
3564 0, 1062, 1063, 790, 790, 0, 0, 58, 59, 60,
3565 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3566 0, 0, 0, 0, 0, 0, 0, 0, 81, 81,
3567 233, 81, 81, 0, 0, 0, 0, 1066, 0, 0,
3568 81, 0, 294, 0, 288, 81, 850, 0, 0, 0,
3569 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3570 0, 0, -783, 0, 676, 0, 282, 0, 0, 0,
3571 -783, -783, -783, 0, 0, -783, -783, -783, 0, -783,
3572 0, 0, 0, 0, 0, 0, 0, -783, -783, -783,
3573 0, 81, 0, 81, 0, 103, 0, 0, 0, -783,
3574 -783, 81, -783, -783, -783, -783, -783, 0, 0, 103,
3575 103, 81, 0, 81, 81, 882, 294, 0, 0, 0,
3576 0, 0, 0, 81, 81, 0, 0, 0, 0, 0,
3577 -783, -783, 0, 0, 0, 0, 537, 0, 538, 539,
3578 540, 541, 542, 0, 0, 0, 103, 103, 904, 0,
3579 81, 0, 0, 0, 0, 0, 0, 0, 0, -783,
3580 -783, 103, 543, 0, 0, 92, 0, 233, 92, 0,
3581 0, 0, 0, 0, 0, 0, 0, 676, 0, 351,
3582 0, 0, 0, -783, 0, 0, 545, 103, 103, 0,
3583 0, 103, 546, 547, 548, 0, 103, 0, 943, 0,
3584 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3585 0, 0, 0, 0, -783, -783, 0, 0, 0, 241,
3586 -783, 0, -783, 0, -783, 0, 549, 0, 0, 550,
3587 0, 233, 352, 353, 354, 355, 356, 357, 358, 359,
3588 360, 361, 362, 363, 364, 0, 246, 233, 0, 365,
3589 366, 0, 790, 790, 0, 367, 0, 0, 790, 790,
3590 0, 0, 0, 0, 0, 0, 0, 92, 233, 0,
3591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3592 991, 0, 0, 92, 0, 81, 0, 81, 81, 0,
3593 368, 0, 369, 370, 371, 372, 373, 374, 375, 376,
3594 377, 378, 1014, 0, 92, 0, 0, 0, 0, 0,
3595 103, 0, 0, 0, 0, 0, 0, 1026, 0, 0,
3596 0, 0, 0, 0, 0, 0, 0, 92, 92, 790,
3597 0, 0, 0, 0, 103, 0, 0, 103, 103, 282,
3598 103, 0, 0, 0, 790, 103, 0, 0, 0, 0,
3599 0, 81, 0, 0, 0, 0, 0, 0, 0, 0,
3600 0, 0, 103, 92, 0, 1050, 0, 81, 0, 0,
3601 0, 0, 81, 81, 0, 0, 0, 0, 81, 81,
3602 0, 92, 0, 0, 92, 0, 0, 81, 81, 0,
3603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3604 0, 0, 1113, 81, 0, 0, 0, 0, 0, 0,
3605 0, 0, 103, 0, 103, 103, 103, 103, 0, 103,
3606 103, 0, 0, 0, 81, 0, 0, 0, 0, 0,
3607 0, 0, 1067, 1067, 0, 0, 0, 1181, 0, 0,
3608 103, 92, 0, 0, 92, 92, 0, 81, 81, 81,
3609 0, 0, 0, 0, 92, 0, 537, 0, 538, 539,
3610 540, 541, 542, 0, 81, 0, 0, 0, 0, 0,
3611 0, 1208, 0, 0, 0, 0, 0, 103, 0, 103,
3612 0, 0, 543, 81, 103, 103, 103, 1191, 0, 1067,
3613 1067, 0, 0, 1067, 0, 0, 544, 0, 233, 0,
3614 103, 81, 0, 0, 81, 0, 545, 0, 0, 0,
3615 1067, 0, 546, 547, 548, 0, 0, 0, 0, 0,
3616 92, 0, 0, 0, 103, 0, 0, 0, 0, 0,
3617 0, 0, 92, 0, 0, 0, 0, 0, 1266, 0,
3618 0, 0, 1067, 0, 0, 0, 549, 0, 103, 550,
3619 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3620 0, 81, 0, 0, 81, 81, 0, 0, 0, 0,
3621 0, 0, 0, 0, 81, 0, 0, 0, 0, 104,
3622 1067, 103, 0, 1067, 0, 233, 0, 0, 0, 0,
3623 0, 233, 233, 104, 104, 0, 0, 1067, 1067, 1067,
3624 103, 0, 1067, 1067, 0, 0, 0, 1067, 1067, 0,
3625 0, 0, 0, 0, 0, 0, 0, 0, 81, 0,
3626 0, 103, 0, 0, 0, 0, 0, 103, 0, 0,
3627 104, 104, 0, 0, 92, 0, 0, 0, 1089, 1089,
3628 81, 0, 0, 0, 0, 104, 0, 0, 0, 0,
3629 0, 0, 81, 0, 0, 0, 0, 0, 0, 0,
3630 0, 0, 0, 0, 0, 0, 103, 103, 0, 103,
3631 103, 104, 104, 0, 0, 104, 0, 0, 103, 0,
3632 104, 0, 0, 103, 0, 0, 0, 0, 0, 0,
3633 0, 23, 24, 25, 26, 1089, 1089, 0, 0, 1089,
3634 0, 0, 0, 0, 0, 81, 0, 32, 33, 34,
3635 1067, 81, 81, 0, 1067, 1067, 1089, 41, 42, 43,
3636 44, 45, 0, 0, 0, 0, 0, 0, 128, 103,
3637 0, 103, 0, 0, 0, 0, 0, 0, 0, 103,
3638 0, 537, 0, 538, 539, 540, 541, 542, 1089, 103,
3639 0, 103, 103, 0, 81, 0, 0, 0, 0, 0,
3640 1067, 103, 103, 0, 0, 0, 0, 543, 0, 58,
3641 59, 60, 61, 62, 63, 64, 65, 66, 0, 128,
3642 128, 544, 0, 297, 0, 0, 1089, 0, 103, 1089,
3643 0, 545, 0, 0, 104, 0, 0, 0, 547, 548,
3644 0, 0, 0, 1089, 1089, 1089, 288, 0, 1089, 1089,
3645 0, 0, 297, 1089, 1089, 0, 0, 0, 104, 0,
3646 0, 104, 104, 0, 104, 404, 414, 414, 0, 104,
3647 0, 549, 0, 0, 0, 910, 0, 0, 0, 0,
3648 0, 0, 0, 0, 0, 0, 104, 0, 0, 0,
3649 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3650 0, 0, 0, 0, 0, 0, 0, 0, 0, 352,
3651 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
3652 363, 364, 0, 0, 0, 0, 365, 366, 0, 0,
3653 0, 0, 0, 0, 0, 0, 104, 0, 104, 104,
3654 104, 104, 0, 104, 104, 0, 0, 0, 0, 0,
3655 0, 0, 0, 0, 0, 0, 1089, 0, 0, 0,
3656 1089, 1089, 0, 103, 104, 103, 103, 368, 0, 369,
3657 370, 371, 372, 373, 374, 375, 376, 377, 378, 0,
3658 0, 0, 0, 128, 0, 0, -279, 0, 0, 0,
3659 0, 77, 0, 0, 0, 0, 0, 0, 0, 0,
3660 0, 104, 0, 104, 0, 0, 1089, 0, 104, 104,
3661 104, 0, 0, 0, 0, 0, 0, 0, 128, 0,
3662 0, 0, 0, 0, 104, 0, 0, 0, 0, 103,
3663 0, 0, 0, 0, 0, 128, 0, 0, 1090, 1090,
3664 0, 0, 77, 77, 0, 103, 290, 0, 104, 0,
3665 103, 103, 0, 0, 0, 297, 103, 103, 0, 0,
3666 0, 0, 0, 0, 0, 103, 103, 0, 0, 0,
3667 0, 0, 104, 0, 0, 290, 0, 0, 0, 0,
3668 0, 103, 0, 0, 0, 128, 0, 0, 290, 290,
3669 290, 0, 0, 0, 0, 1090, 1090, 0, 0, 1090,
3670 0, 0, 103, 0, 0, 104, 0, 0, 0, 0,
3671 0, 0, 0, 128, 297, 0, 1090, 1091, 1091, 0,
3672 0, 0, 0, 0, 104, 103, 103, 103, 0, 0,
3673 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3674 0, 0, 103, 0, 0, 104, 0, 0, 1090, 0,
3675 0, 104, 128, 0, 0, 0, 0, 128, 0, 128,
3676 0, 103, 0, 0, 0, 0, 0, 0, 0, 0,
3677 0, 0, 0, 0, 1091, 1091, 0, 0, 1091, 103,
3678 0, 0, 103, 0, 0, 0, 1090, 0, 0, 1090,
3679 104, 104, 0, 104, 104, 1091, 0, 0, 0, 0,
3680 0, 0, 104, 1090, 1090, 1090, 77, 104, 1090, 1090,
3681 0, 0, 0, 1090, 1090, 0, 0, 0, 0, 0,
3682 0, 0, 0, 0, 0, 0, 0, 1091, 0, 0,
3683 0, 0, 0, 0, 0, 0, 0, 0, 0, 103,
3684 0, 77, 103, 103, 0, 0, 0, 0, 0, 0,
3685 0, 0, 103, 104, 128, 104, 0, 0, 77, 0,
3686 0, 0, 0, 104, 0, 1091, 0, 0, 1091, 0,
3687 0, 297, 0, 104, 0, 104, 104, 0, 290, 0,
3688 0, 0, 1091, 1091, 1091, 104, 104, 1091, 1091, 0,
3689 0, 0, 1091, 1091, 128, 0, 103, 0, 0, 0,
3690 128, 0, 0, 0, 0, 0, 0, 0, 77, 0,
3691 0, 0, 104, 0, 0, 0, 1090, 0, 103, 0,
3692 1090, 1090, 0, 0, 0, 0, 0, 0, 0, 0,
3693 103, 0, 0, 0, 0, 0, 77, 290, 0, 0,
3694 128, 0, 0, 128, 0, 0, 0, 0, 0, 0,
3695 0, 0, 0, 297, 78, 0, 791, 0, 0, 0,
3696 0, 0, 0, 0, 0, 0, 1090, 0, 0, 0,
3697 0, 0, 0, 0, 0, 77, 0, 0, 0, 0,
3698 77, 0, 77, 103, 0, 0, 0, 0, 0, 103,
3699 103, 0, 0, 0, 0, 1091, 0, 0, 0, 1091,
3700 1091, 0, 128, 0, 128, 78, 78, 0, 0, 291,
3701 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3702 0, 0, 0, 0, 128, 0, 0, 0, 0, 0,
3703 0, 0, 103, 0, 791, 791, 0, 0, 291, 0,
3704 0, 0, 0, 0, 0, 1091, 0, 104, 0, 104,
3705 104, 291, 291, 291, 124, 0, 0, 0, 0, 0,
3706 0, 0, 0, 0, 1092, 1092, 0, 0, 0, 0,
3707 0, 0, 0, 297, 0, 0, 0, 77, 0, 0,
3708 0, 0, 869, 0, 0, 0, 0, 0, 0, 0,
3709 0, 0, 0, 0, 290, 0, 0, 0, 0, 0,
3710 0, 0, 0, 0, 0, 124, 124, 0, 0, 295,
3711 0, 0, 0, 104, 0, 0, 0, 77, 0, 0,
3712 0, 1092, 1092, 77, 0, 1092, 0, 0, 0, 104,
3713 0, 0, 0, 0, 104, 104, 0, 0, 295, 0,
3714 104, 104, 1092, 0, 0, 0, 0, 297, 0, 104,
3715 104, 402, 412, 412, 412, 0, 0, 0, 0, 0,
3716 0, 0, 0, 77, 0, 104, 77, 0, 0, 78,
3717 0, 0, 0, 0, 1092, 0, 290, 0, 0, 77,
3718 0, 0, 0, 0, 0, 0, 104, 0, 0, 0,
3719 0, 0, 0, 0, 0, 0, 128, 0, 0, 128,
3720 0, 0, 0, 0, 78, 0, 0, 0, 0, 104,
3721 104, 104, 1092, 0, 0, 1092, 0, 0, 0, 0,
3722 0, 78, 0, 0, 0, 77, 104, 77, 0, 1092,
3723 1092, 1092, 0, 0, 1092, 1092, 0, 0, 0, 1092,
3724 1092, 291, 0, 0, 0, 104, 0, 77, 0, 0,
3725 0, 0, 0, 0, 0, 0, 0, 77, 77, 0,
3726 0, 0, 0, 104, 0, 0, 104, 0, 0, 124,
3727 0, 78, 0, 0, 0, 0, 0, 0, 0, 0,
3728 0, 0, 0, 791, 791, 0, 0, 0, 0, 791,
3729 791, 0, 0, 0, 0, 0, 290, 0, 128, 78,
3730 291, 0, 0, 0, 124, 0, 0, 0, 0, 0,
3731 0, 0, 0, 0, 128, 0, 0, 0, 0, 0,
3732 0, 124, 0, 104, 0, 0, 104, 104, 0, 0,
3733 0, 0, 0, 0, 0, 128, 104, 0, 78, 0,
3734 0, 295, 1092, 78, 0, 78, 1092, 1092, 0, 0,
3735 0, 0, 0, 0, 0, 0, 0, 0, 128, 128,
3736 791, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3737 290, 124, 0, 0, 0, 791, 0, 0, 0, 0,
3738 104, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3739 0, 0, 1092, 0, 128, 0, 0, 0, 0, 124,
3740 295, 0, 104, 0, 0, 0, 0, 88, 0, 0,
3741 0, 0, 128, 0, 104, 128, 0, 0, 0, 77,
3742 0, 0, 77, 0, 0, 0, 0, 0, 0, 0,
3743 0, 0, 0, 0, 0, 0, 1093, 1093, 124, 0,
3744 78, 0, 0, 124, 0, 124, 0, 0, 0, 0,
3745 0, 0, 0, 0, 0, 0, 0, 291, 88, 88,
3746 0, 0, 0, 0, 0, 0, 0, 104, 1184, 0,
3747 0, 0, 128, 104, 104, 128, 128, 0, 0, 0,
3748 78, 0, 0, 0, 0, 128, 78, 0, 0, 0,
3749 0, 0, 0, 1093, 1093, 0, 0, 1093, 0, 0,
3750 0, 0, 414, 0, 399, 0, 77, 77, 0, 0,
3751 0, 0, 77, 77, 1093, 0, 104, 0, 0, 0,
3752 0, 77, 0, 0, 0, 0, 78, 0, 0, 78,
3753 0, 0, 0, 0, 0, 0, 0, 77, 0, 291,
3754 124, 0, 78, 0, 0, 0, 1093, 0, 0, 0,
3755 0, 128, 0, 0, 0, 0, 0, 295, 77, 0,
3756 0, 0, 0, 128, 0, 0, 0, 0, 0, 414,
3757 0, 0, 0, 0, 0, 1094, 1094, 0, 0, 0,
3758 124, 77, 77, 77, 1093, 0, 124, 1093, 78, 0,
3759 78, 0, 0, 0, 0, 0, 0, 0, 77, 0,
3760 0, 1093, 1093, 1093, 0, 0, 1093, 1093, 0, 0,
3761 78, 1093, 1093, 0, 0, 0, 0, 77, 0, 0,
3762 78, 78, 88, 0, 127, 0, 124, 0, 0, 124,
3763 0, 0, 1094, 1094, 0, 77, 1094, 0, 77, 295,
3764 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3765 0, 0, 0, 1094, 0, 0, 0, 88, 0, 291,
3766 0, 0, 0, 0, 0, 128, 0, 0, 0, 0,
3767 0, 1095, 1095, 0, 88, 127, 127, 0, 0, 0,
3768 0, 0, 0, 0, 0, 1094, 0, 0, 124, 0,
3769 124, 290, 0, 0, 0, 77, 0, 0, 77, 77,
3770 0, 0, 0, 0, 0, 0, 0, 0, 77, 0,
3771 124, 0, 0, 0, 1093, 0, 0, 0, 1093, 1093,
3772 0, 0, 0, 1094, 88, 290, 1094, 0, 1095, 1095,
3773 0, 0, 1095, 291, 0, 0, 0, 0, 0, 0,
3774 1094, 1094, 1094, 0, 0, 1094, 1094, 0, 0, 1095,
3775 1094, 1094, 88, 1096, 1096, 0, 0, 0, 0, 295,
3776 0, 0, 0, 0, 1093, 0, 0, 0, 0, 0,
3777 0, 0, 0, 0, 77, 0, 0, 0, 0, 0,
3778 0, 1095, 78, 0, 0, 78, 77, 0, 0, 0,
3779 0, 88, 290, 0, 0, 0, 88, 0, 88, 0,
3780 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3781 1096, 1096, 0, 0, 1096, 0, 0, 0, 0, 1095,
3782 0, 0, 1095, 0, 0, 0, 0, 0, 0, 0,
3783 0, 1096, 0, 295, 0, 0, 1095, 1095, 1095, 127,
3784 0, 1095, 1095, 0, 0, 0, 1095, 1095, 0, 0,
3785 0, 0, 0, 1094, 0, 0, 0, 1094, 1094, 0,
3786 0, 0, 0, 1096, 0, 0, 0, 0, 0, 78,
3787 78, 0, 0, 0, 127, 78, 78, 0, 0, 0,
3788 0, 0, 124, 0, 78, 124, 0, 0, 77, 0,
3789 0, 127, 0, 88, 0, 0, 0, 0, 0, 0,
3790 78, 1096, 0, 1094, 1096, 0, 0, 0, 0, 0,
3791 0, 0, 0, 0, 0, 0, 0, 0, 1096, 1096,
3792 1096, 78, 0, 1096, 1096, 0, 0, 0, 1096, 1096,
3793 0, 0, 0, 88, 0, 0, 0, 0, 0, 88,
3794 0, 127, 0, 0, 78, 78, 78, 0, 0, 1095,
3795 0, 0, 0, 1095, 1095, 0, 0, 0, 0, 0,
3796 0, 78, 0, 0, 0, 0, 0, 0, 0, 127,
3797 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,
3798 78, 0, 88, 0, 124, 0, 0, 0, 0, 0,
3799 0, 0, 0, 0, 0, 785, 0, 0, 78, 1095,
3800 124, 78, 0, 0, 0, 0, 0, 0, 127, 0,
3801 0, 0, 0, 127, 0, 127, 0, 0, 0, 0,
3802 0, 124, 0, 0, 0, 0, 0, 0, 0, 0,
3803 0, 1096, 0, 0, 0, 1096, 1096, 0, 0, 0,
3804 0, 88, 0, 88, 124, 124, 0, 0, 0, 23,
3805 24, 25, 26, 0, 291, 0, 0, 0, 78, 0,
3806 0, 78, 78, 88, 0, 32, 33, 34, 1055, 0,
3807 0, 78, 1056, 785, 785, 41, 42, 43, 44, 45,
3808 124, 1096, 0, 0, 0, 0, 0, 0, 291, 0,
3809 0, 0, 0, 0, 0, 0, 0, 0, 124, 0,
3810 0, 124, 0, 0, 0, 0, 0, 1058, 1059, 0,
3811 127, 0, 0, 0, 0, 1060, 0, 0, 1061, 0,
3812 0, 1062, 1063, 0, 1064, 0, 0, 58, 59, 60,
3813 61, 62, 63, 64, 65, 66, 0, 78, 0, 0,
3814 0, 0, 227, 227, 0, 0, 0, 0, 0, 78,
3815 127, 0, 0, 0, 1182, 291, 127, 1066, 124, 0,
3816 0, 124, 124, 0, 288, 0, 0, 0, 0, 0,
3817 0, 124, 0, 0, 260, 264, 265, 266, 246, 0,
3818 0, 227, 227, 0, 0, 0, 0, 0, 412, 0,
3819 0, 0, 0, 0, 313, 314, 127, 0, 0, 127,
3820 0, 352, 353, 354, 355, 356, 357, 358, 359, 0,
3821 361, 362, 127, 0, 0, 0, 0, 0, 365, 366,
3822 0, 0, 0, 0, 0, 0, 0, 0, 0, 227,
3823 0, 0, 0, 0, 0, 88, 0, 124, 88, 0,
3824 0, 0, 0, 0, 0, 0, 0, 0, 0, 124,
3825 0, 78, 0, 0, 0, 412, 0, 0, 127, 0,
3826 127, 369, 370, 371, 372, 373, 374, 375, 376, 377,
3827 378, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3828 127, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3829 127, 127, 0, 0, 0, 0, 0, 0, 0, 0,
3830 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3831 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3832 0, 0, 785, 785, 0, 0, 0, 0, 785, 785,
3833 0, 0, 0, 0, 0, 0, 0, 88, 0, 0,
3834 0, 227, 0, 0, 227, 227, 227, 0, 313, 0,
3835 0, 124, 0, 88, 0, 0, 0, 0, 0, 23,
3836 24, 25, 26, 0, 0, 0, 0, 227, 0, 0,
3837 227, 0, 0, 0, 88, 32, 33, 34, 1055, 0,
3838 0, 0, 1056, 0, 1057, 41, 42, 43, 44, 45,
3839 0, 0, 0, 0, 0, 0, 0, 88, 88, 785,
3840 0, 0, 0, 0, 543, 0, 0, 0, 0, 0,
3841 0, 0, 0, 0, 785, 0, 0, 1058, 1059, 0,
3842 0, 0, 0, 0, 0, 1060, 0, 0, 1061, 0,
3843 0, 1062, 1063, 88, 1064, 547, 0, 58, 59, 1065,
3844 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3845 0, 88, 127, 0, 88, 127, 0, 0, 0, 0,
3846 0, 0, 0, 0, 0, 0, 0, 1066, 0, 0,
3847 0, 0, 0, 0, 288, 0, 0, 0, 592, 593,
3848 594, 595, 596, 0, 0, 597, 598, 599, 600, 601,
3849 602, 603, 604, 0, 606, 0, 0, 607, 608, 609,
3850 610, 611, 612, 613, 614, 615, 616, 1180, 0, 0,
3851 227, 88, 0, 0, 88, 88, 0, 0, 0, 0,
3852 0, 0, 0, 0, 88, 0, 0, 0, 0, 0,
3853 0, 0, 0, 0, 0, 0, 0, 0, 0, 127,
3854 127, 0, 0, 0, 0, 127, 127, 0, 0, 0,
3855 0, 0, 0, 0, 127, 0, 0, 227, 0, 0,
3856 0, 0, 0, 0, 0, 0, 0, 0, 617, 618,
3857 127, 0, 619, 0, 0, 0, 227, 227, 0, 0,
3858 0, 227, 0, 0, 0, 227, 0, 266, 0, 0,
3859 88, 127, 175, 176, 177, 178, 179, 180, 181, 182,
3860 183, 0, 88, 184, 185, 696, 0, 0, 0, 186,
3861 187, 188, 189, 0, 127, 127, 127, 0, 227, 0,
3862 0, 227, 0, 0, 190, 191, 0, 0, 0, 0,
3863 0, 127, 0, 227, 0, 0, 0, 0, 0, 0,
3864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3865 127, 726, 0, 0, 192, 193, 194, 195, 196, 197,
3866 198, 199, 200, 201, 0, 202, 203, 0, 127, 0,
3867 0, 127, 204, 241, 0, 0, 0, 0, 0, 0,
3868 0, 0, 0, 0, 0, 0, 0, 227, 352, -784,
3869 -784, -784, -784, 357, 358, 0, 0, -784, -784, 758,
3870 0, 0, 758, 0, 88, 365, 366, 0, 0, 0,
3871 0, 227, 0, 0, 0, 0, 786, 0, 0, 0,
3872 0, 0, 0, 0, 0, 0, 0, 0, 127, 0,
3873 0, 127, 127, 0, 0, 0, 0, 0, 0, 0,
3874 0, 127, 0, 0, 0, 0, 0, 0, 369, 370,
3875 371, 372, 373, 374, 375, 376, 377, 378, 0, 0,
3876 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3877 0, 0, 227, 0, 0, 0, 0, 0, 0, 0,
3878 0, 0, 227, 0, 0, 0, 0, 0, 0, 0,
3879 0, 0, 0, 0, 845, 845, 0, 227, 758, 758,
3880 845, 0, 0, 0, 0, 0, 0, 127, 0, 0,
3881 0, 845, 845, 0, 0, 227, 0, 227, 0, 127,
3882 0, 0, 0, 0, 0, 0, 0, 845, -783, 4,
3883 0, 5, 6, 7, 8, 9, 0, 0, 0, 10,
3884 11, 0, 0, 0, 12, 0, 13, 14, 15, 16,
3885 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
3886 22, 23, 24, 25, 26, 0, 227, 27, 0, 0,
3887 0, 0, 0, 28, 29, 30, 31, 32, 33, 34,
3888 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3889 44, 45, 46, 47, 0, 0, 0, 0, 0, 227,
3890 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3891 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3892 51, 127, 0, 0, 0, 0, 0, 52, 227, 0,
3893 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3894 59, 60, 61, 62, 63, 64, 65, 66, 0, 227,
3895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3896 0, 0, 0, 0, 0, 0, 0, 0, 627, 628,
3897 0, 0, 629, 0, 0, 0, 67, 68, 69, 0,
3898 0, 0, 0, 0, 0, 0, 0, 0, -783, 0,
3899 -783, 0, 175, 176, 177, 178, 179, 180, 181, 182,
3900 183, 0, 0, 184, 185, 0, 0, 0, 0, 186,
3901 187, 188, 189, 0, 0, 0, 0, 0, 0, 0,
3902 0, 0, 758, 0, 190, 191, 0, 0, 0, 0,
3903 0, 227, 0, 0, 0, 0, 0, 0, 227, 0,
3904 0, 0, 1003, 845, 845, 0, 0, 0, 0, 845,
3905 845, 0, 0, 227, 192, 193, 194, 195, 196, 197,
3906 198, 199, 200, 201, 0, 202, 203, 0, 227, 0,
3907 0, 0, 204, 241, 0, 0, 0, 0, 0, 0,
3908 0, 0, 0, 758, 845, 845, 0, 845, 845, 0,
3909 227, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3911 0, 0, 1043, 1044, 0, 0, 227, 0, 0, 0,
3912 845, 1053, 0, 0, 0, 0, 0, 0, 0, 0,
3913 0, 0, 0, 0, 0, 845, 0, 0, 0, 0,
3914 0, 0, 0, 0, -783, 4, 0, 5, 6, 7,
3915 8, 9, 0, 227, 0, 10, 11, 0, 0, 845,
3916 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3917 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
3918 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
3919 29, 268, 31, 32, 33, 34, 35, 36, 37, 38,
3920 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3921 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3922 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3923 0, 0, 0, 0, 0, 50, 51, 0, 227, 0,
3924 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
3925 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
3926 63, 64, 65, 66, 0, -783, 0, 0, 0, 0,
3927 -761, 0, 0, 0, 0, 0, 0, 0, -761, -761,
3928 -761, 0, 0, -761, -761, -761, 0, -761, 0, 0,
3929 0, 0, 67, 68, 69, -761, -761, -761, -761, -761,
3930 0, 0, 0, 0, -783, 0, -783, -761, -761, 0,
3931 -761, -761, -761, -761, -761, 0, 0, 0, 352, 353,
3932 354, 355, 356, 357, 358, 359, 360, 361, 362, -784,
3933 -784, 0, 0, 0, 0, 365, 366, 0, -761, -761,
3934 0, 0, 0, 0, 0, 0, 0, 0, -761, -761,
3935 -761, -761, -761, -761, -761, -761, -761, -761, -761, -761,
3936 -761, 0, 0, 0, 0, -761, -761, -761, -761, 0,
3937 853, -761, 0, 0, 0, 0, 227, -761, 369, 370,
3938 371, 372, 373, 374, 375, 376, 377, 378, 0, 0,
3939 0, -761, 0, 0, -761, 0, 0, 0, 0, 0,
3940 0, 0, 0, 0, 0, -131, -761, -761, -761, -761,
3941 -761, -761, -761, -761, -761, -761, -761, -761, 0, 0,
3942 0, 0, -761, -761, -761, -761, -654, 0, -761, -761,
3943 -761, 0, -761, 0, -654, -654, -654, 0, 0, -654,
3944 -654, -654, 0, -654, 0, 0, 0, 0, 0, 0,
3945 0, -654, 0, -654, -654, -654, 0, 0, 0, 0,
3946 0, 0, 0, -654, -654, 0, -654, -654, -654, -654,
3947 -654, 0, 0, 0, 352, 353, 354, 355, 356, 357,
3948 358, 359, 360, 361, 362, 363, 364, 0, 0, 0,
3949 0, 365, 366, 0, -654, -654, 0, 0, 0, 0,
3950 0, 0, 0, 0, -654, -654, -654, -654, -654, -654,
3951 -654, -654, -654, -654, -654, -654, -654, 0, 0, 0,
3952 0, -654, -654, -654, -654, 0, -654, -654, 0, 0,
3953 0, 0, 368, -654, 369, 370, 371, 372, 373, 374,
3954 375, 376, 377, 378, 0, 0, 0, -654, 0, 0,
3955 -654, 0, 0, 0, 0, 0, 0, 0, 246, 0,
3956 0, -654, -654, -654, -654, -654, -654, -654, -654, -654,
3957 -654, -654, -654, -654, 0, 0, 0, 0, 0, -654,
3958 -654, -654, -655, 0, -654, -654, -654, 0, -654, 0,
3959 -655, -655, -655, 0, 0, -655, -655, -655, 0, -655,
3960 0, 0, 0, 0, 0, 0, 0, -655, 0, -655,
3961 -655, -655, 0, 0, 0, 0, 0, 0, 0, -655,
3962 -655, 0, -655, -655, -655, -655, -655, 0, 0, 0,
3963 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
3964 362, 363, 364, 0, 0, 0, 0, 365, 366, 0,
3965 -655, -655, 0, 0, 0, 0, 0, 0, 0, 0,
3966 -655, -655, -655, -655, -655, -655, -655, -655, -655, -655,
3967 -655, -655, -655, 0, 0, 0, 0, -655, -655, -655,
3968 -655, 0, -655, -655, 0, 0, 0, 0, 368, -655,
3969 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
3970 0, 0, 0, -655, 0, 0, -655, 0, 0, 0,
3971 0, 0, 0, 0, 0, 0, 0, -655, -655, -655,
3972 -655, -655, -655, -655, -655, -655, -655, -655, -655, -655,
3973 0, 0, 0, 0, 0, -655, -655, -655, -762, 0,
3974 -655, -655, -655, 0, -655, 0, -762, -762, -762, 0,
3975 0, -762, -762, -762, 0, -762, 0, 0, 0, 0,
3976 0, 0, 0, -762, -762, -762, -762, -762, 0, 0,
3977 0, 0, 0, 0, 0, -762, -762, 0, -762, -762,
3978 -762, -762, -762, 0, 0, 0, 352, 353, 354, 355,
3979 356, 357, 358, 0, 0, 361, 362, 0, 0, 0,
3980 0, 0, 0, 365, 366, 0, -762, -762, 0, 0,
3981 0, 0, 0, 0, 0, 0, -762, -762, -762, -762,
3982 -762, -762, -762, -762, -762, -762, -762, -762, -762, 0,
3983 0, 0, 0, -762, -762, -762, -762, 0, 0, -762,
3984 0, 0, 0, 0, 0, -762, 369, 370, 371, 372,
3985 373, 374, 375, 376, 377, 378, 0, 0, 0, -762,
3986 0, 0, -762, 0, 0, 0, 0, 0, 0, 0,
3987 0, 0, 0, 0, -762, -762, -762, -762, -762, -762,
3988 -762, -762, -762, -762, -762, -762, 0, 0, 0, 0,
3989 -762, -762, -762, -762, -763, 0, -762, -762, -762, 0,
3990 -762, 0, -763, -763, -763, 0, 0, -763, -763, -763,
3991 0, -763, 0, 0, 0, 0, 0, 0, 0, -763,
3992 -763, -763, -763, -763, 0, 0, 0, 0, 0, 0,
3993 0, -763, -763, 0, -763, -763, -763, -763, -763, 0,
3994 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3996 0, 0, -763, -763, 0, 0, 0, 0, 0, 0,
3997 0, 0, -763, -763, -763, -763, -763, -763, -763, -763,
3998 -763, -763, -763, -763, -763, 0, 0, 0, 0, -763,
3999 -763, -763, -763, 0, 0, -763, 0, 0, 0, 0,
4000 0, -763, 0, 0, 0, 0, 0, 0, 0, 0,
4001 0, 0, 0, 0, 0, -763, 0, 0, -763, 0,
4002 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4003 -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
4004 -763, -763, 0, 0, 0, 0, -763, -763, -763, -763,
4005 -475, 0, -763, -763, -763, 0, -763, 0, -475, -475,
4006 -475, 0, 0, -475, -475, -475, 0, -475, 0, 0,
4007 0, 0, 0, 0, 0, -475, -475, -475, -475, 0,
4008 0, 0, 0, 0, 0, 0, 0, -475, -475, 0,
4009 -475, -475, -475, -475, -475, 0, 0, 0, 0, 0,
4010 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4011 0, 0, 0, 0, 0, 0, 0, 0, -475, -475,
4012 0, 0, 0, 0, 0, 0, 0, 0, -475, -475,
4013 -475, -475, -475, -475, -475, -475, -475, -475, -475, -475,
4014 -475, 0, 0, 0, 0, -475, -475, -475, -475, 0,
4015 0, -475, 0, 0, 0, 0, 0, -475, 0, 0,
4016 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4017 0, -475, 0, 0, 0, 0, 0, 0, 0, 0,
4018 0, 0, 0, 0, 0, 0, -475, 0, -475, -475,
4019 -475, -475, -475, -475, -475, -475, -475, -475, 0, 0,
4020 0, 0, -475, -475, -475, -475, -328, 241, -475, -475,
4021 -475, 0, -475, 0, -328, -328, -328, 0, 0, -328,
4022 -328, -328, 0, -328, 0, 0, 0, 0, 0, 0,
4023 0, -328, 0, -328, -328, -328, 0, 0, 0, 0,
4024 0, 0, 0, -328, -328, 0, -328, -328, -328, -328,
4025 -328, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4027 0, 0, 0, 0, -328, -328, 0, 0, 0, 0,
4028 0, 0, 0, 0, -328, -328, -328, -328, -328, -328,
4029 -328, -328, -328, -328, -328, -328, -328, 0, 0, 0,
4030 0, -328, -328, -328, -328, 0, 0, -328, 0, 0,
4031 0, 0, 0, -328, 0, 0, 0, 0, 0, 0,
4032 0, 0, 0, 0, 0, 0, 0, -328, 0, 0,
4033 -328, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4034 0, 0, -328, -328, -328, -328, -328, -328, -328, -328,
4035 -328, -328, -328, -328, 0, 0, 0, 0, 0, -328,
4036 -328, -328, -783, 0, -328, -328, -328, 0, -328, 0,
4037 -783, -783, -783, 0, 0, -783, -783, -783, 0, -783,
4038 0, 0, 0, 0, 0, 0, 0, -783, -783, -783,
4039 -783, 0, 0, 0, 0, 0, 0, 0, 0, -783,
4040 -783, 0, -783, -783, -783, -783, -783, 0, 0, 0,
4041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4043 -783, -783, 0, 0, 0, 0, 0, 0, 0, 0,
4044 -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
4045 -783, -783, -783, 0, 0, 0, 0, -783, -783, -783,
4046 -783, 0, 0, -783, 0, 0, 0, 0, 0, -783,
4047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4048 0, 0, 0, -783, 0, 0, 0, 0, 0, 0,
4049 0, 0, 0, 0, 0, 0, 0, 0, -783, 0,
4050 -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
4051 0, 0, 0, 0, -783, -783, -783, -783, -334, 241,
4052 -783, -783, -783, 0, -783, 0, -334, -334, -334, 0,
4053 0, -334, -334, -334, 0, -334, 0, 0, 0, 0,
4054 0, 0, 0, -334, 0, -334, -334, 0, 0, 0,
4055 0, 0, 0, 0, 0, -334, -334, 0, -334, -334,
4056 -334, -334, -334, 0, 0, 0, 0, 0, 0, 0,
4057 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4058 0, 0, 0, 0, 0, 0, -334, -334, 0, 0,
4059 0, 0, 0, 0, 0, 0, -334, -334, -334, -334,
4060 -334, -334, -334, -334, -334, -334, -334, -334, -334, 0,
4061 0, 0, 0, -334, -334, -334, -334, 0, 854, -334,
4062 0, 0, 0, 0, 0, -334, 0, 0, 0, 0,
4063 0, 0, 0, 0, 0, 0, 0, 0, 0, -334,
4064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4065 0, 0, 0, -133, -334, 0, -334, -334, -334, -334,
4066 -334, -334, -334, -334, -334, -334, 0, 0, 0, 0,
4067 797, -334, -334, -334, -341, 0, -334, -334, -334, 0,
4068 -334, 0, -341, -341, -341, 0, 0, -341, -341, -341,
4069 0, -341, 0, 0, 0, 0, 0, 0, 0, -341,
4070 0, -341, -341, 0, 0, 0, 0, 0, 0, 0,
4071 0, -341, -341, 0, -341, -341, -341, -341, -341, 0,
4072 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4073 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4074 0, 0, -341, -341, 0, 0, 0, 0, 0, 0,
4075 0, 0, -341, -341, -341, -341, -341, -341, -341, -341,
4076 -341, -341, -341, -341, -341, 0, 0, 0, 0, -341,
4077 -341, -341, -341, 0, 0, -341, 0, 0, 0, 0,
4078 0, -341, 0, 0, 0, 0, 0, 0, 0, 0,
4079 0, 0, 0, 0, 0, -341, 0, 0, 0, 0,
4080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4081 -341, 0, -341, -341, -341, -341, -341, -341, -341, -341,
4082 -341, -341, 0, 0, 0, 0, 0, -341, -341, -341,
4083 -761, 431, -341, -341, -341, 0, -341, 0, -761, -761,
4084 -761, 910, 0, 0, -761, -761, 0, -761, 0, 0,
4085 0, 0, 0, 0, 0, -761, -761, 0, 0, 0,
4086 0, 0, 0, 0, 0, 0, 0, -761, -761, 0,
4087 -761, -761, -761, -761, -761, 352, 353, 354, 355, 356,
4088 357, 358, 359, 360, 361, 362, 363, 364, 0, 0,
4089 0, 0, 365, 366, 0, 0, 0, 0, -761, -761,
4090 0, 0, 0, 0, 0, 0, 0, 0, -761, -761,
4091 -761, -761, -761, -761, -761, -761, -761, -761, -761, -761,
4092 -761, 0, 0, 0, 0, -761, -761, -761, -761, 0,
4093 795, -761, 0, 368, 0, 369, 370, 371, 372, 373,
4094 374, 375, 376, 377, 378, 0, 0, 0, 0, 0,
4095 0, -761, 0, 0, 0, 0, 0, 0, 0, 0,
4096 0, 0, 0, 0, 0, -131, -761, 0, -761, -761,
4097 -761, -761, -761, -761, -761, -761, -761, -761, 0, 0,
4098 0, 0, -761, -761, -761, -122, -761, 0, -761, 0,
4099 -761, 0, -761, 0, -761, -761, -761, 0, 0, 0,
4100 -761, -761, 0, -761, 0, 0, 0, 0, 0, 0,
4101 0, -761, -761, 0, 0, 0, 0, 0, 0, 0,
4102 0, 0, 0, -761, -761, 0, -761, -761, -761, -761,
4103 -761, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4105 0, 0, 0, 0, -761, -761, 0, 0, 0, 0,
4106 0, 0, 0, 0, -761, -761, -761, -761, -761, -761,
4107 -761, -761, -761, -761, -761, -761, -761, 0, 0, 0,
4108 0, -761, -761, -761, -761, 0, 795, -761, 0, 0,
4109 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4110 0, 0, 0, 0, 0, 0, 0, -761, 0, 0,
4111 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4112 0, -131, -761, 0, -761, -761, -761, -761, -761, -761,
4113 -761, -761, -761, -761, 0, 0, 0, 0, -761, -761,
4114 -761, -761, -334, 0, -761, 0, -761, 0, -761, 0,
4115 -334, -334, -334, 0, 0, 0, -334, -334, 0, -334,
4116 0, 0, 0, 0, 0, 0, 0, -334, 0, 0,
4117 0, 0, 0, 0, 0, 0, 0, 0, 0, -334,
4118 -334, 0, -334, -334, -334, -334, -334, 0, 0, 0,
4119 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4120 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4121 -334, -334, 0, 0, 0, 0, 0, 0, 0, 0,
4122 -334, -334, -334, -334, -334, -334, -334, -334, -334, -334,
4123 -334, -334, -334, 0, 0, 0, 0, -334, -334, -334,
4124 -334, 0, 796, -334, 0, 0, 0, 0, 0, 0,
4125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4126 0, 0, 0, -334, 0, 0, 0, 0, 0, 0,
4127 0, 0, 0, 0, 0, 0, 0, -133, -334, 0,
4128 -334, -334, -334, -334, -334, -334, -334, -334, -334, -334,
4129 0, 0, 0, 0, 797, -334, -334, -124, -334, 0,
4130 -334, 0, -334, 0, -334, 0, -334, -334, -334, 0,
4131 0, 0, -334, -334, 0, -334, 0, 0, 0, 0,
4132 0, 0, 0, -334, 0, 0, 0, 0, 0, 0,
4133 0, 0, 0, 0, 0, -334, -334, 0, -334, -334,
4134 -334, -334, -334, 0, 0, 0, 0, 0, 0, 0,
4135 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4136 0, 0, 0, 0, 0, 0, -334, -334, 0, 0,
4137 0, 0, 0, 0, 0, 0, -334, -334, -334, -334,
4138 -334, -334, -334, -334, -334, -334, -334, -334, -334, 0,
4139 0, 0, 0, -334, -334, -334, -334, 0, 796, -334,
4140 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4141 0, 0, 0, 0, 0, 0, 0, 0, 0, -334,
4142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4143 0, 0, 0, -133, -334, 0, -334, -334, -334, -334,
4144 -334, -334, -334, -334, -334, -334, 0, 0, 0, 0,
4145 797, -334, -334, -334, 0, 0, -334, 0, -334, 4,
4146 -334, 5, 6, 7, 8, 9, -783, -783, -783, 10,
4147 11, 0, 0, -783, 12, 0, 13, 14, 15, 16,
4148 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
4149 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
4150 0, 0, 0, 28, 29, 268, 31, 32, 33, 34,
4151 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
4152 44, 45, 46, 47, 0, 0, -783, 0, 0, 0,
4153 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
4154 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
4155 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
4156 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
4157 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
4158 0, 4, 0, 5, 6, 7, 8, 9, 0, 0,
4159 -783, 10, 11, 0, -783, -783, 12, 0, 13, 14,
4160 15, 16, 17, 18, 19, 0, 67, 68, 69, 0,
4161 20, 21, 22, 23, 24, 25, 26, 0, -783, 27,
4162 -783, 0, 0, 0, 0, 28, 29, 268, 31, 32,
4163 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
4164 42, 43, 44, 45, 46, 47, 0, 0, -783, 0,
4165 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
4166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4167 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
4168 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
4169 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
4170 0, 0, 0, 4, 0, 5, 6, 7, 8, 9,
4171 0, 0, -783, 10, 11, 0, 0, -783, 12, -783,
4172 13, 14, 15, 16, 17, 18, 19, 0, 67, 68,
4173 69, 0, 20, 21, 22, 23, 24, 25, 26, 0,
4174 -783, 27, -783, 0, 0, 0, 0, 28, 29, 268,
4175 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4176 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4177 -783, 0, 0, 0, 0, 0, 0, 0, 48, 49,
4178 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4179 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
4180 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
4181 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4182 65, 66, 0, 0, 0, 4, 0, 5, 6, 7,
4183 8, 9, 0, 0, -783, 10, 11, 0, 0, -783,
4184 12, 0, 13, 14, 15, 16, 17, 18, 19, -783,
4185 67, 68, 69, 0, 20, 21, 22, 23, 24, 25,
4186 26, 0, -783, 27, -783, 0, 0, 0, 0, 28,
4187 29, 268, 31, 32, 33, 34, 35, 36, 37, 38,
4188 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
4189 0, 0, -783, 0, 0, 0, 0, 0, 0, 0,
4190 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
4191 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
4192 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
4193 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
4194 63, 64, 65, 66, 0, 0, 0, 4, 0, 5,
4195 6, 7, 8, 9, 0, 0, -783, 10, 11, 0,
4196 0, -783, 12, 0, 13, 14, 15, 16, 17, 18,
4197 19, 0, 67, 68, 69, 0, 20, 21, 22, 23,
4198 24, 25, 26, 0, -783, 27, -783, 0, 0, 0,
4199 0, 28, 29, 268, 31, 32, 33, 34, 35, 36,
4200 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
4201 46, 47, 0, 0, -783, 0, 0, 0, 0, 0,
4202 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
4203 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
4204 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
4205 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
4206 61, 62, 63, 64, 65, 66, 0, 0, 0, 4,
4207 0, 5, 6, 7, 8, 9, 0, -783, -783, 10,
4208 11, 0, 0, 0, 12, 0, 13, 14, 15, 16,
4209 17, 18, 19, 0, 67, 68, 69, 0, 20, 21,
4210 22, 23, 24, 25, 26, 0, -783, 27, -783, 0,
4211 0, 0, 0, 28, 29, 268, 31, 32, 33, 34,
4212 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
4213 44, 45, 46, 47, 0, 0, -783, 0, 0, 0,
4214 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
4215 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
4216 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
4217 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
4218 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
4219 0, 4, 0, 5, 6, 7, 8, 9, 0, 0,
4220 -783, 10, 11, 0, 0, 0, 12, 0, 13, 14,
4221 15, 16, 17, 18, 19, 0, 67, 68, 69, 0,
4222 20, 21, 22, 23, 24, 25, 26, 0, -783, 27,
4223 -783, 0, 0, 0, 0, 28, 29, 268, 31, 32,
4224 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
4225 42, 43, 44, 45, 46, 47, 0, 0, -783, 0,
4226 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
4227 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4228 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
4229 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
4230 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
4231 0, 0, 0, 4, 0, 5, 6, 7, 8, 9,
4232 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4233 13, 14, 15, 16, 17, 18, 19, 0, 67, 68,
4234 69, 0, 20, 21, 22, 23, 24, 25, 26, 0,
4235 -783, 27, -783, 0, 0, 0, 0, 28, 29, 268,
4236 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4237 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4238 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
4239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4240 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
4241 0, 52, 0, 0, 269, 54, 0, 55, 56, 0,
4242 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4243 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
4244 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4245 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4246 67, 68, 69, 0, 0, 0, 0, 0, 0, 0,
4247 -783, 0, -783, 4, -783, 5, 6, 7, 8, 9,
4248 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4249 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
4250 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
4251 0, 27, 0, 0, 0, 0, 0, 28, 29, 268,
4252 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4253 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4254 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
4255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4256 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
4257 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
4258 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4259 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
4260 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4261 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4262 67, 68, 69, 0, 0, 0, 0, 0, 0, 0,
4263 -783, 0, -783, 4, -783, 5, 6, 7, 8, 9,
4264 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4265 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
4266 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
4267 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
4268 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4269 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4270 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
4271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4272 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
4273 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
4274 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4275 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
4276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4277 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4278 67, 68, 69, 0, 0, -783, 0, 0, 0, 0,
4279 0, 0, -783, 4, -783, 5, 6, 7, 8, 9,
4280 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4281 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
4282 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
4283 0, 27, 0, 0, 0, 0, 0, 28, 29, 268,
4284 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4285 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4286 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
4287 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4288 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
4289 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
4290 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4291 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
4292 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4293 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4294 67, 68, 69, 0, 0, -783, 0, 387, 0, 5,
4295 6, 7, -783, 9, -783, 0, 0, 10, 11, 0,
4296 0, 0, 12, -770, 13, 14, 15, 16, 17, 18,
4297 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
4298 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
4299 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
4300 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
4301 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
4302 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
4303 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
4304 0, 0, 0, 0, 0, 216, 0, 0, 217, 54,
4305 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
4306 61, 62, 63, 64, 65, 66, 0, 0, -771, 4,
4307 0, 5, 6, 7, 8, 9, -771, -771, -771, 10,
4308 11, 0, -771, -771, 12, -771, 13, 14, 15, 16,
4309 17, 18, 19, -771, 67, 68, 69, 0, 20, 21,
4310 22, 23, 24, 25, 26, 0, 315, 27, 316, 0,
4311 0, 0, 0, 28, 29, 268, 31, 32, 33, 34,
4312 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
4313 44, 45, 46, 47, 0, 0, -771, 0, 0, 0,
4314 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
4315 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
4316 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
4317 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
4318 59, 60, 61, 62, 63, 64, 65, 66, 0, -771,
4319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4320 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4321 0, 0, 0, 0, 0, 0, 67, 68, 69, 0,
4322 0, -771, 0, 0, 0, 0, -771, 0, 526, -771,
4323 4, 0, 5, 6, 7, 8, 9, 0, 0, 0,
4324 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
4325 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
4326 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
4327 0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
4328 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
4329 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
4330 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
4331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4332 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
4333 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
4334 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
4335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4336 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4337 0, 0, 0, 0, 0, 0, 0, 67, 68, 69,
4338 0, 0, -771, 5, 6, 7, 0, 9, 0, 526,
4339 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
4340 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
4341 20, 21, 22, 23, 24, 25, 26, 0, 0, 214,
4342 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
4343 33, 34, 35, 36, 37, 38, 39, 40, 215, 41,
4344 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
4345 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
4346 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4347 0, 50, 51, 0, 0, 0, 0, 0, 0, 216,
4348 0, 0, 217, 54, 0, 55, 56, 0, 218, 219,
4349 220, 58, 59, 221, 61, 62, 63, 64, 65, 66,
4350 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
4351 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
4352 14, 15, 16, 17, 18, 19, 0, 0, 67, 222,
4353 69, 20, 21, 22, 23, 24, 25, 26, 0, 0,
4354 27, 0, 246, 0, 0, 0, 0, 29, 0, 0,
4355 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
4356 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
4357 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
4358 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4359 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
4360 216, 0, 0, 217, 54, 0, 55, 56, 0, 0,
4361 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
4362 66, 0, 0, 0, 0, 131, 132, 133, 134, 135,
4363 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
4364 146, 147, 148, 149, 150, 151, 152, 153, 154, 67,
4365 68, 69, 155, 156, 157, 416, 417, 418, 419, 162,
4366 163, 164, 0, 246, 0, 0, 0, 165, 166, 167,
4367 168, 420, 421, 422, 423, 173, 37, 38, 424, 40,
4368 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4369 0, 0, 0, 0, 0, 0, 0, 0, 175, 176,
4370 177, 178, 179, 180, 181, 182, 183, 0, 0, 184,
4371 185, 0, 0, 0, 0, 186, 187, 188, 189, 0,
4372 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4373 190, 191, 0, 0, 0, 0, 0, 0, 0, 0,
4374 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4376 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
4377 0, 202, 203, 0, 0, 0, 0, 0, 204, 425,
4378 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
4379 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
4380 151, 152, 153, 154, 0, 0, 0, 155, 156, 157,
4381 158, 159, 160, 161, 162, 163, 164, 0, 0, 0,
4382 0, 0, 165, 166, 167, 168, 169, 170, 171, 172,
4383 173, 37, 38, 174, 40, 0, 0, 0, 0, 0,
4384 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4385 0, 0, 0, 175, 176, 177, 178, 179, 180, 181,
4386 182, 183, 0, 0, 184, 185, 0, 0, 0, 0,
4387 186, 187, 188, 189, 0, 0, 0, 0, 0, 0,
4388 0, 0, 0, 0, 0, 190, 191, 0, 0, 0,
4389 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4391 0, 0, 0, 0, 0, 192, 193, 194, 195, 196,
4392 197, 198, 199, 200, 201, 0, 202, 203, 0, 0,
4393 0, 0, 0, 204, 131, 132, 133, 134, 135, 136,
4394 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
4395 147, 148, 149, 150, 151, 152, 153, 154, 0, 0,
4396 0, 155, 156, 157, 158, 159, 160, 161, 162, 163,
4397 164, 0, 0, 0, 0, 0, 165, 166, 167, 168,
4398 169, 170, 171, 172, 173, 248, 0, 174, 0, 0,
4399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4400 0, 0, 0, 0, 0, 0, 0, 175, 176, 177,
4401 178, 179, 180, 181, 182, 183, 0, 0, 184, 185,
4402 0, 0, 0, 0, 186, 187, 188, 189, 0, 0,
4403 0, 0, 0, 0, 0, 0, 0, 0, 0, 190,
4404 191, 0, 0, 59, 0, 0, 0, 0, 0, 0,
4405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4406 0, 0, 0, 0, 0, 0, 0, 0, 0, 192,
4407 193, 194, 195, 196, 197, 198, 199, 200, 201, 0,
4408 202, 203, 0, 0, 0, 0, 0, 204, 131, 132,
4409 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
4410 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
4411 153, 154, 0, 0, 0, 155, 156, 157, 158, 159,
4412 160, 161, 162, 163, 164, 0, 0, 0, 0, 0,
4413 165, 166, 167, 168, 169, 170, 171, 172, 173, 0,
4414 0, 174, 0, 0, 0, 0, 0, 0, 0, 0,
4415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4416 0, 175, 176, 177, 178, 179, 180, 181, 182, 183,
4417 0, 0, 184, 185, 0, 0, 0, 0, 186, 187,
4418 188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
4419 0, 0, 0, 190, 191, 0, 0, 59, 0, 0,
4420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4422 0, 0, 0, 192, 193, 194, 195, 196, 197, 198,
4423 199, 200, 201, 0, 202, 203, 0, 0, 0, 0,
4424 0, 204, 131, 132, 133, 134, 135, 136, 137, 138,
4425 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
4426 149, 150, 151, 152, 153, 154, 0, 0, 0, 155,
4427 156, 157, 158, 159, 160, 161, 162, 163, 164, 0,
4428 0, 0, 0, 0, 165, 166, 167, 168, 169, 170,
4429 171, 172, 173, 0, 0, 174, 0, 0, 0, 0,
4430 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4431 0, 0, 0, 0, 0, 175, 176, 177, 178, 179,
4432 180, 181, 182, 183, 0, 0, 184, 185, 0, 0,
4433 0, 0, 186, 187, 188, 189, 0, 0, 0, 0,
4434 0, 0, 0, 0, 0, 0, 0, 190, 191, 0,
4435 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4437 0, 0, 0, 0, 0, 0, 0, 192, 193, 194,
4438 195, 196, 197, 198, 199, 200, 201, 0, 202, 203,
4439 5, 6, 7, 0, 9, 204, 0, 0, 10, 11,
4440 0, 0, 0, 12, 0, 13, 14, 15, 256, 257,
4441 18, 19, 0, 0, 0, 0, 0, 20, 21, 258,
4442 23, 24, 25, 26, 0, 0, 214, 0, 0, 0,
4443 0, 0, 0, 286, 0, 0, 32, 33, 34, 35,
4444 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
4445 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4446 0, 0, 0, 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, 287, 0, 0, 217,
4449 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
4450 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
4451 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4452 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
4453 7, 0, 9, 0, 0, 288, 10, 11, 0, 0,
4454 0, 12, 289, 13, 14, 15, 256, 257, 18, 19,
4455 0, 0, 0, 0, 0, 20, 21, 258, 23, 24,
4456 25, 26, 0, 0, 214, 0, 0, 0, 0, 0,
4457 0, 286, 0, 0, 32, 33, 34, 35, 36, 37,
4458 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
4459 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4460 0, 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, 287, 0, 0, 217, 54, 0,
4463 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
4464 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
4465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4466 0, 0, 0, 0, 4, 0, 5, 6, 7, 8,
4467 9, 0, 0, 288, 10, 11, 0, 0, 0, 12,
4468 587, 13, 14, 15, 16, 17, 18, 19, 0, 0,
4469 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
4470 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
4471 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4472 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
4473 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
4474 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4475 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
4476 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
4477 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
4478 64, 65, 66, 0, 0, 387, 0, 5, 6, 7,
4479 0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
4480 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
4481 0, 67, 68, 69, 20, 21, 22, 23, 24, 25,
4482 26, 0, 0, 27, 0, 0, 0, 0, 0, 0,
4483 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
4484 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
4485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4486 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
4487 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
4488 0, 0, 0, 216, 0, 0, 217, 54, 0, 55,
4489 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
4490 63, 64, 65, 66, 0, 0, 0, 0, 5, 6,
4491 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
4492 0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
4493 0, 0, 67, 68, 69, 20, 21, 22, 23, 24,
4494 25, 26, 0, 0, 214, 0, 0, 0, 0, 0,
4495 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
4496 38, 39, 40, 215, 41, 42, 43, 44, 45, 46,
4497 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4498 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
4499 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
4500 0, 0, 0, 0, 216, 0, 0, 217, 54, 0,
4501 55, 56, 0, 218, 219, 220, 58, 59, 221, 61,
4502 62, 63, 64, 65, 66, 0, 0, 0, 0, 5,
4503 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
4504 0, 0, 12, 0, 13, 14, 15, 16, 17, 18,
4505 19, 0, 0, 67, 222, 69, 20, 21, 22, 23,
4506 24, 25, 26, 0, 0, 214, 0, 0, 0, 0,
4507 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
4508 37, 38, 39, 40, 215, 41, 42, 43, 44, 45,
4509 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
4510 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
4511 0, 0, 0, 0, 0, 0, 0, 50, 461, 0,
4512 0, 0, 0, 0, 0, 216, 0, 0, 217, 54,
4513 0, 55, 56, 0, 218, 219, 220, 58, 59, 221,
4514 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
4515 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
4516 0, 0, 0, 12, 0, 13, 14, 15, 256, 257,
4517 18, 19, 0, 0, 67, 222, 69, 20, 21, 258,
4518 23, 24, 25, 26, 0, 0, 214, 0, 0, 0,
4519 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
4520 36, 37, 38, 39, 40, 215, 41, 42, 43, 44,
4521 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4522 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
4523 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
4524 0, 0, 0, 0, 0, 0, 216, 0, 0, 217,
4525 54, 0, 55, 56, 0, 218, 219, 220, 58, 59,
4526 221, 61, 62, 63, 64, 65, 66, 0, 0, 0,
4527 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
4528 11, 0, 0, 0, 12, 0, 13, 14, 15, 256,
4529 257, 18, 19, 0, 0, 67, 222, 69, 20, 21,
4530 258, 23, 24, 25, 26, 0, 0, 214, 0, 0,
4531 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
4532 35, 36, 37, 38, 39, 40, 215, 41, 42, 43,
4533 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
4534 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
4535 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
4536 461, 0, 0, 0, 0, 0, 0, 216, 0, 0,
4537 217, 54, 0, 55, 56, 0, 218, 219, 220, 58,
4538 59, 221, 61, 62, 63, 64, 65, 66, 0, 0,
4539 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
4540 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
4541 256, 257, 18, 19, 0, 0, 67, 222, 69, 20,
4542 21, 258, 23, 24, 25, 26, 0, 0, 214, 0,
4543 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
4544 34, 35, 36, 37, 38, 39, 40, 215, 41, 42,
4545 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
4546 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
4547 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4548 50, 51, 0, 0, 0, 0, 0, 0, 216, 0,
4549 0, 217, 54, 0, 55, 56, 0, 218, 219, 0,
4550 58, 59, 221, 61, 62, 63, 64, 65, 66, 0,
4551 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
4552 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
4553 15, 256, 257, 18, 19, 0, 0, 67, 222, 69,
4554 20, 21, 258, 23, 24, 25, 26, 0, 0, 214,
4555 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
4556 33, 34, 35, 36, 37, 38, 39, 40, 215, 41,
4557 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
4558 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
4559 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4560 0, 50, 51, 0, 0, 0, 0, 0, 0, 216,
4561 0, 0, 217, 54, 0, 55, 56, 0, 0, 219,
4562 220, 58, 59, 221, 61, 62, 63, 64, 65, 66,
4563 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
4564 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
4565 14, 15, 256, 257, 18, 19, 0, 0, 67, 222,
4566 69, 20, 21, 258, 23, 24, 25, 26, 0, 0,
4567 214, 0, 0, 0, 0, 0, 0, 29, 0, 0,
4568 32, 33, 34, 35, 36, 37, 38, 39, 40, 215,
4569 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
4570 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
4571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4572 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
4573 216, 0, 0, 217, 54, 0, 55, 56, 0, 0,
4574 219, 0, 58, 59, 221, 61, 62, 63, 64, 65,
4575 66, 0, 0, 0, 0, 5, 6, 7, 0, 9,
4576 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4577 13, 14, 15, 16, 17, 18, 19, 0, 0, 67,
4578 222, 69, 20, 21, 22, 23, 24, 25, 26, 0,
4579 0, 214, 0, 0, 0, 0, 0, 0, 29, 0,
4580 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4581 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4582 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
4583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4584 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
4585 0, 216, 0, 0, 217, 54, 0, 55, 56, 0,
4586 773, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4587 65, 66, 0, 0, 0, 0, 5, 6, 7, 0,
4588 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
4589 0, 13, 14, 15, 256, 257, 18, 19, 0, 0,
4590 67, 222, 69, 20, 21, 258, 23, 24, 25, 26,
4591 0, 0, 214, 0, 0, 0, 0, 0, 0, 29,
4592 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
4593 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
4594 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
4595 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4596 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
4597 0, 0, 216, 0, 0, 217, 54, 0, 55, 56,
4598 0, 942, 0, 0, 58, 59, 60, 61, 62, 63,
4599 64, 65, 66, 0, 0, 0, 0, 5, 6, 7,
4600 0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
4601 12, 0, 13, 14, 15, 256, 257, 18, 19, 0,
4602 0, 67, 222, 69, 20, 21, 258, 23, 24, 25,
4603 26, 0, 0, 214, 0, 0, 0, 0, 0, 0,
4604 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
4605 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
4606 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4607 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
4608 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
4609 0, 0, 0, 216, 0, 0, 217, 54, 0, 55,
4610 56, 0, 990, 0, 0, 58, 59, 60, 61, 62,
4611 63, 64, 65, 66, 0, 0, 0, 0, 5, 6,
4612 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
4613 0, 12, 0, 13, 14, 15, 256, 257, 18, 19,
4614 0, 0, 67, 222, 69, 20, 21, 258, 23, 24,
4615 25, 26, 0, 0, 214, 0, 0, 0, 0, 0,
4616 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
4617 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
4618 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4619 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
4620 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
4621 0, 0, 0, 0, 216, 0, 0, 217, 54, 0,
4622 55, 56, 0, 773, 0, 0, 58, 59, 60, 61,
4623 62, 63, 64, 65, 66, 0, 0, 0, 0, 5,
4624 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
4625 0, 0, 12, 0, 13, 14, 15, 256, 257, 18,
4626 19, 0, 0, 67, 222, 69, 20, 21, 258, 23,
4627 24, 25, 26, 0, 0, 214, 0, 0, 0, 0,
4628 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
4629 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
4630 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
4631 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
4632 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
4633 0, 0, 0, 0, 0, 216, 0, 0, 217, 54,
4634 0, 55, 56, 0, 1112, 0, 0, 58, 59, 60,
4635 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
4636 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
4637 0, 0, 0, 12, 0, 13, 14, 15, 256, 257,
4638 18, 19, 0, 0, 67, 222, 69, 20, 21, 258,
4639 23, 24, 25, 26, 0, 0, 214, 0, 0, 0,
4640 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
4641 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
4642 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4643 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
4644 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
4645 0, 0, 0, 0, 0, 0, 216, 0, 0, 217,
4646 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
4647 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
4648 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
4649 11, 0, 0, 0, 12, 0, 13, 14, 15, 16,
4650 17, 18, 19, 0, 0, 67, 222, 69, 20, 21,
4651 22, 23, 24, 25, 26, 0, 0, 214, 0, 0,
4652 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
4653 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
4654 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
4655 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
4656 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
4657 51, 0, 0, 0, 0, 0, 0, 216, 0, 0,
4658 217, 54, 0, 55, 56, 0, 0, 0, 0, 58,
4659 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
4660 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
4661 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
4662 16, 17, 18, 19, 0, 0, 67, 222, 69, 20,
4663 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
4664 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
4665 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
4666 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
4667 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
4668 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4669 50, 51, 0, 0, 0, 0, 0, 0, 216, 0,
4670 0, 217, 54, 0, 55, 56, 0, 0, 0, 0,
4671 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
4672 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
4673 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
4674 15, 16, 17, 18, 19, 0, 0, 67, 68, 69,
4675 20, 21, 22, 23, 24, 25, 26, 0, 0, 755,
4676 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
4677 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
4678 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
4679 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
4680 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4681 0, 50, 51, 0, 0, 0, 0, 0, 0, 216,
4682 0, 0, 217, 54, 0, 55, 56, 0, 0, 0,
4683 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
4684 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
4685 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
4686 14, 15, 256, 257, 18, 19, 0, 0, 67, 222,
4687 69, 20, 21, 258, 23, 24, 25, 26, 0, 0,
4688 851, 0, 0, 0, 0, 0, 0, 29, 0, 0,
4689 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
4690 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
4691 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
4692 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4693 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
4694 216, 0, 0, 217, 54, 0, 55, 56, 0, 0,
4695 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
4696 66, 0, 0, 0, 0, 5, 6, 7, 0, 9,
4697 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4698 13, 14, 15, 256, 257, 18, 19, 0, 0, 67,
4699 222, 69, 20, 21, 258, 23, 24, 25, 26, 0,
4700 0, 214, 0, 0, 0, 0, 0, 0, 286, 0,
4701 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4702 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4703 0, 0, 0, 0, 0, 0, 0, 0, 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, 287, 0, 0, 347, 54, 0, 55, 56, 0,
4707 348, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4708 65, 66, 0, 0, 5, 6, 7, 0, 9, 0,
4709 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
4710 14, 15, 256, 257, 18, 19, 0, 0, 0, 0,
4711 288, 20, 21, 258, 23, 24, 25, 26, 0, 0,
4712 214, 0, 0, 0, 0, 0, 0, 286, 0, 0,
4713 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
4714 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
4715 0, 0, 0, 0, 0, 0, 0, 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 397, 0, 0, 53, 54, 0, 55, 56, 0, 57,
4719 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
4720 66, 0, 0, 5, 6, 7, 0, 9, 0, 0,
4721 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
4722 15, 256, 257, 18, 19, 0, 0, 0, 0, 288,
4723 20, 21, 258, 23, 24, 25, 26, 0, 0, 214,
4724 0, 0, 0, 0, 0, 0, 286, 0, 0, 32,
4725 33, 34, 405, 36, 37, 38, 406, 40, 0, 41,
4726 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
4727 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4729 0, 0, 0, 0, 0, 407, 0, 0, 0, 408,
4730 0, 0, 217, 54, 0, 55, 56, 0, 0, 0,
4731 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
4732 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
4733 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
4734 256, 257, 18, 19, 0, 0, 0, 0, 288, 20,
4735 21, 258, 23, 24, 25, 26, 0, 0, 214, 0,
4736 0, 0, 0, 0, 0, 286, 0, 0, 32, 33,
4737 34, 405, 36, 37, 38, 406, 40, 0, 41, 42,
4738 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
4739 0, 0, 0, 0, 0, 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, 408, 0,
4742 0, 217, 54, 0, 55, 56, 0, 0, 0, 0,
4743 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
4744 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
4745 11, 0, 0, 0, 12, 0, 13, 14, 15, 256,
4746 257, 18, 19, 0, 0, 0, 0, 288, 20, 21,
4747 258, 23, 24, 25, 26, 0, 0, 214, 0, 0,
4748 0, 0, 0, 0, 286, 0, 0, 32, 33, 34,
4749 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
4750 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
4751 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4753 0, 0, 0, 0, 0, 0, 0, 287, 0, 0,
4754 347, 54, 0, 55, 56, 0, 0, 0, 0, 58,
4755 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
4756 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
4757 0, 0, 0, 12, 0, 13, 14, 15, 256, 257,
4758 18, 19, 0, 0, 0, 0, 288, 20, 21, 258,
4759 23, 24, 25, 26, 0, 0, 214, 0, 0, 0,
4760 0, 0, 0, 286, 0, 0, 32, 33, 34, 35,
4761 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
4762 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4763 0, 0, 0, 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, 1179, 0, 0, 217,
4766 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
4767 60, 61, 62, 63, 64, 65, 66, 0, 0, 5,
4768 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
4769 0, 0, 12, 0, 13, 14, 15, 256, 257, 18,
4770 19, 0, 0, 0, 0, 288, 20, 21, 258, 23,
4771 24, 25, 26, 0, 0, 214, 0, 0, 0, 0,
4772 0, 0, 286, 0, 0, 32, 33, 34, 35, 36,
4773 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
4774 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
4775 0, 0, 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, 1207, 0, 0, 217, 54,
4778 0, 55, 56, 23, 24, 25, 26, 58, 59, 60,
4779 61, 62, 63, 64, 65, 66, 0, 0, 0, 32,
4780 33, 34, 1055, 0, 0, 0, 1056, 0, 0, 41,
4781 42, 43, 44, 45, 0, 0, 0, 0, 0, 0,
4782 0, 0, 0, 0, 288, 0, 0, 0, 0, 0,
4783 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4784 0, 1058, 1059, 0, 0, 0, 680, 618, 0, 1060,
4785 681, 0, 1061, 0, 0, 1062, 1063, 0, 1064, 0,
4786 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
4787 175, 176, 177, 178, 179, 180, 181, 182, 183, 0,
4788 0, 184, 185, 0, 0, 0, 0, 186, 187, 188,
4789 189, 1066, 0, 0, 0, 0, 0, 0, 288, 0,
4790 0, 0, 190, 191, 0, 0, 0, 0, 0, 0,
4791 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4792 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4793 0, 0, 192, 193, 194, 195, 196, 197, 198, 199,
4794 200, 201, 0, 202, 203, 683, 628, 0, 0, 684,
4795 204, 241, 0, 0, 0, 0, 0, 0, 0, 0,
4796 0, 0, 0, 0, 0, 0, 0, 0, 0, 175,
4797 176, 177, 178, 179, 180, 181, 182, 183, 0, 0,
4798 184, 185, 0, 0, 0, 0, 186, 187, 188, 189,
4799 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4800 0, 190, 191, 0, 0, 0, 0, 0, 0, 0,
4801 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4802 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4803 0, 192, 193, 194, 195, 196, 197, 198, 199, 200,
4804 201, 0, 202, 203, 680, 618, 0, 0, 698, 204,
4805 241, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4806 0, 0, 0, 0, 0, 0, 0, 0, 175, 176,
4807 177, 178, 179, 180, 181, 182, 183, 0, 0, 184,
4808 185, 0, 0, 0, 0, 186, 187, 188, 189, 0,
4809 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4810 190, 191, 0, 0, 0, 0, 0, 0, 0, 0,
4811 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4812 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4813 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
4814 0, 202, 203, 709, 618, 0, 0, 710, 204, 241,
4815 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4816 0, 0, 0, 0, 0, 0, 0, 175, 176, 177,
4817 178, 179, 180, 181, 182, 183, 0, 0, 184, 185,
4818 0, 0, 0, 0, 186, 187, 188, 189, 0, 0,
4819 0, 0, 0, 0, 0, 0, 0, 0, 0, 190,
4820 191, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4821 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4822 0, 0, 0, 0, 0, 0, 0, 0, 0, 192,
4823 193, 194, 195, 196, 197, 198, 199, 200, 201, 0,
4824 202, 203, 712, 628, 0, 0, 713, 204, 241, 0,
4825 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4826 0, 0, 0, 0, 0, 0, 175, 176, 177, 178,
4827 179, 180, 181, 182, 183, 0, 0, 184, 185, 0,
4828 0, 0, 0, 186, 187, 188, 189, 0, 0, 0,
4829 0, 0, 0, 0, 0, 0, 0, 0, 190, 191,
4830 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4831 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4832 0, 0, 0, 0, 0, 0, 0, 0, 192, 193,
4833 194, 195, 196, 197, 198, 199, 200, 201, 0, 202,
4834 203, 825, 618, 0, 0, 826, 204, 241, 0, 0,
4835 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4836 0, 0, 0, 0, 0, 175, 176, 177, 178, 179,
4837 180, 181, 182, 183, 0, 0, 184, 185, 0, 0,
4838 0, 0, 186, 187, 188, 189, 0, 0, 0, 0,
4839 0, 0, 0, 0, 0, 0, 0, 190, 191, 0,
4840 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4841 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4842 0, 0, 0, 0, 0, 0, 0, 192, 193, 194,
4843 195, 196, 197, 198, 199, 200, 201, 0, 202, 203,
4844 828, 628, 0, 0, 829, 204, 241, 0, 0, 0,
4845 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4846 0, 0, 0, 0, 175, 176, 177, 178, 179, 180,
4847 181, 182, 183, 0, 0, 184, 185, 0, 0, 0,
4848 0, 186, 187, 188, 189, 0, 0, 0, 0, 0,
4849 0, 0, 0, 0, 0, 0, 190, 191, 0, 0,
4850 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4851 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4852 0, 0, 0, 0, 0, 0, 192, 193, 194, 195,
4853 196, 197, 198, 199, 200, 201, 0, 202, 203, 834,
4854 618, 0, 0, 835, 204, 241, 0, 0, 0, 0,
4855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4856 0, 0, 0, 175, 176, 177, 178, 179, 180, 181,
4857 182, 183, 0, 0, 184, 185, 0, 0, 0, 0,
4858 186, 187, 188, 189, 0, 0, 0, 0, 0, 0,
4859 0, 0, 0, 0, 0, 190, 191, 0, 0, 0,
4860 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4861 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4862 0, 0, 0, 0, 0, 192, 193, 194, 195, 196,
4863 197, 198, 199, 200, 201, 0, 202, 203, 665, 628,
4864 0, 0, 666, 204, 241, 0, 0, 0, 0, 0,
4865 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4866 0, 0, 175, 176, 177, 178, 179, 180, 181, 182,
4867 183, 0, 0, 184, 185, 0, 0, 0, 0, 186,
4868 187, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4869 0, 0, 0, 0, 190, 191, 0, 0, 0, 0,
4870 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4872 0, 0, 0, 0, 192, 193, 194, 195, 196, 197,
4873 198, 199, 200, 201, 0, 202, 203, 996, 618, 0,
4874 0, 997, 204, 241, 0, 0, 0, 0, 0, 0,
4875 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4876 0, 175, 176, 177, 178, 179, 180, 181, 182, 183,
4877 0, 0, 184, 185, 0, 0, 0, 0, 186, 187,
4878 188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
4879 0, 0, 0, 190, 191, 0, 0, 0, 0, 0,
4880 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4882 0, 0, 0, 192, 193, 194, 195, 196, 197, 198,
4883 199, 200, 201, 0, 202, 203, 999, 628, 0, 0,
4884 1000, 204, 241, 0, 0, 0, 0, 0, 0, 0,
4885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4886 175, 176, 177, 178, 179, 180, 181, 182, 183, 0,
4887 0, 184, 185, 0, 0, 0, 0, 186, 187, 188,
4888 189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4889 0, 0, 190, 191, 0, 0, 0, 0, 0, 0,
4890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4891 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4892 0, 0, 192, 193, 194, 195, 196, 197, 198, 199,
4893 200, 201, 0, 202, 203, 1292, 618, 0, 0, 1293,
4894 204, 241, 0, 0, 0, 0, 0, 0, 0, 0,
4895 0, 0, 0, 0, 0, 0, 0, 0, 0, 175,
4896 176, 177, 178, 179, 180, 181, 182, 183, 0, 0,
4897 184, 185, 0, 0, 0, 0, 186, 187, 188, 189,
4898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4899 0, 190, 191, 0, 0, 0, 0, 0, 0, 0,
4900 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4901 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4902 0, 192, 193, 194, 195, 196, 197, 198, 199, 200,
4903 201, 0, 202, 203, 1295, 628, 0, 0, 1296, 204,
4904 241, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4905 0, 0, 0, 0, 0, 0, 0, 0, 175, 176,
4906 177, 178, 179, 180, 181, 182, 183, 0, 0, 184,
4907 185, 0, 0, 0, 0, 186, 187, 188, 189, 0,
4908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4909 190, 191, 0, 0, 0, 0, 0, 0, 0, 0,
4910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4912 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
4913 0, 202, 203, 1309, 618, 0, 0, 1310, 204, 241,
4914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4915 0, 0, 0, 0, 0, 0, 0, 175, 176, 177,
4916 178, 179, 180, 181, 182, 183, 0, 0, 184, 185,
4917 0, 0, 0, 0, 186, 187, 188, 189, 0, 0,
4918 0, 0, 0, 0, 0, 0, 0, 0, 0, 190,
4919 191, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4920 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4921 0, 0, 0, 0, 0, 0, 0, 0, 0, 192,
4922 193, 194, 195, 196, 197, 198, 199, 200, 201, 0,
4923 202, 203, 665, 628, 0, 0, 666, 204, 241, 0,
4924 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4925 0, 0, 0, 0, 0, 0, 175, 176, 177, 178,
4926 179, 180, 181, 182, 183, 0, 0, 184, 185, 0,
4927 0, 0, 0, 186, 187, 188, 189, 0, 0, 0,
4928 0, 0, 0, 0, 0, 0, 0, 0, 190, 191,
4929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4930 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4931 0, 0, 0, 0, 0, 0, 0, 0, 192, 193,
4932 194, 195, 196, 197, 198, 199, 200, 201, 0, 202,
4933 203, 0, 0, 0, 0, 0, 204
4936static const yytype_int16 yycheck[] =
4938 2, 92, 16, 17, 60, 22, 95, 59, 68, 98,
4939 8, 2, 384, 53, 54, 106, 408, 328, 28, 16,
4940 17, 332, 14, 15, 813, 107, 238, 390, 16, 17,
4941 28, 59, 563, 8, 574, 97, 745, 577, 383, 590,
4942 385, 328, 81, 742, 57, 332, 53, 332, 71, 86,
4943 451, 53, 54, 28, 241, 57, 304, 305, 55, 56,
4944 459, 59, 16, 17, 81, 104, 576, 55, 94, 95,
4945 451, 98, 98, 86, 102, 98, 576, 915, 459, 820,
4946 505, 73, 745, 455, 86, 67, 99, 100, 101, 103,
4947 435, 492, 64, 65, 66, 0, 495, 99, 100, 101,
4948 102, 57, 580, 280, 102, 2, 103, 284, 749, 454,
4949 605, 456, 878, 880, 71, 103, 25, 1002, 658, 78,
4950 37, 38, 13, 26, 1211, 742, 69, 29, 1152, 269,
4951 31, 793, 749, 66, 13, 507, 101, 482, 25, 66,
4952 78, 0, 233, 98, 1168, 1045, 110, 1001, 1002, 103,
4953 749, 1045, 25, 752, 97, 98, 53, 54, 55, 56,
4954 579, 25, 587, 508, 583, 221, 10, 153, 26, 100,
4955 261, 100, 135, 673, 668, 669, 162, 217, 142, 799,
4956 77, 78, 13, 66, 1152, 100, 1024, 807, 69, 122,
4957 123, 25, 34, 120, 157, 122, 123, 162, 1166, 154,
4958 25, 13, 157, 294, 135, 13, 135, 347, 100, 545,
4959 52, 154, 162, 13, 13, 217, 121, 98, 1305, 245,
4960 135, 247, 124, 1061, 68, 1063, 1111, 241, 161, 269,
4961 244, 13, 321, 322, 323, 324, 13, 120, 1132, 25,
4962 155, 258, 259, 135, 271, 162, 155, 244, 271, 152,
4963 252, 13, 289, 241, 466, 1279, 244, 1111, 25, 1283,
4964 1284, 252, 269, 655, 155, 224, 13, 269, 155, 160,
4965 1037, 162, 1038, 521, 646, 523, 289, 939, 157, 25,
4966 979, 160, 155, 162, 656, 223, 224, 289, 689, 25,
4967 244, 155, 691, 833, 152, 321, 322, 323, 324, 157,
4968 326, 327, 647, 392, 1204, 1329, 288, 347, 689, 400,
4969 691, 1211, 657, 1213, 271, 1169, 1284, 319, 407, 797,
4970 217, 155, 1176, 1177, 819, 1114, 223, 224, 319, 160,
4971 155, 162, 291, 974, 231, 348, 1174, 1175, 1001, 1002,
4972 347, 238, 1001, 1002, 241, 347, 348, 27, 160, 250,
4973 162, 391, 160, 393, 162, 252, 781, 974, 157, 890,
4974 160, 160, 162, 162, 1001, 1002, 392, 394, 385, 155,
4975 384, 394, 269, 1114, 152, 974, 927, 976, 160, 1196,
4976 162, 407, 981, 160, 386, 162, 896, 385, 155, 391,
4977 157, 393, 348, 729, 730, 155, 896, 66, 160, 135,
4978 162, 802, 162, 1062, 78, 1305, 1062, 1307, 948, 155,
4979 101, 157, 1312, 160, 1314, 162, 69, 431, 100, 155,
4980 1079, 802, 158, 917, 918, 101, 162, 1281, 1045, 923,
4981 924, 742, 15, 159, 431, 1335, 162, 435, 749, 456,
4982 69, 455, 25, 431, 345, 98, 1045, 69, 1111, 350,
4983 347, 120, 1111, 135, 451, 1176, 1177, 957, 456, 160,
4984 27, 162, 29, 100, 155, 482, 476, 679, 505, 98,
4985 718, 145, 146, 147, 1111, 723, 98, 431, 476, 155,
4986 160, 34, 162, 56, 482, 1302, 488, 384, 528, 386,
4987 1149, 508, 505, 507, 391, 492, 393, 161, 135, 52,
4988 1209, 476, 689, 505, 905, 1204, 1169, 1166, 28, 1049,
4989 508, 25, 100, 1176, 1177, 1009, 100, 1176, 1177, 58,
4990 1176, 1177, 37, 38, 155, 585, 528, 1126, 100, 706,
4991 590, 162, 534, 135, 1323, 69, 274, 438, 439, 78,
4992 912, 590, 878, 534, 880, 52, 1209, 135, 449, 56,
4993 587, 135, 575, 383, 865, 385, 457, 458, 455, 573,
4994 1281, 155, 576, 135, 98, 964, 911, 464, 913, 466,
4995 109, 110, 574, 157, 587, 577, 477, 25, 865, 135,
4996 865, 944, 483, 964, 623, 587, 648, 1204, 25, 113,
4997 1058, 1059, 100, 632, 1211, 100, 636, 585, 638, 1130,
4998 100, 155, 590, 142, 100, 435, 623, 1138, 668, 669,
4999 507, 100, 1211, 1312, 1213, 632, 584, 640, 1281, 668,
5000 669, 135, 155, 15, 454, 17, 456, 135, 667, 162,
5001 647, 528, 646, 659, 636, 135, 638, 56, 69, 135,
5002 657, 155, 656, 157, 158, 69, 135, 859, 162, 647,
5003 667, 481, 482, 157, 551, 966, 658, 1197, 1021, 657,
5004 670, 100, 69, 974, 716, 633, 563, 98, 1060, 695,
5005 707, 639, 670, 641, 98, 1045, 506, 574, 508, 966,
5006 577, 966, 699, 700, 157, 14, 15, 135, 1305, 162,
5007 97, 98, 689, 431, 707, 670, 135, 135, 135, 790,
5008 101, 1037, 1038, 1171, 1172, 707, 1305, 155, 1307, 78,
5009 158, 155, 279, 280, 162, 1314, 155, 284, 155, 286,
5010 78, 158, 714, 26, 462, 162, 69, 465, 69, 626,
5011 135, 469, 100, 634, 1045, 632, 1335, 95, 96, 636,
5012 1103, 638, 1273, 832, 781, 100, 718, 485, 720, 646,
5013 155, 723, 724, 66, 97, 98, 97, 98, 26, 656,
5014 842, 658, 69, 157, 66, 155, 69, 100, 781, 69,
5015 667, 89, 90, 157, 143, 144, 145, 146, 147, 781,
5016 135, 1173, 679, 157, 142, 143, 144, 145, 146, 147,
5017 830, 98, 760, 52, 97, 98, 764, 56, 98, 766,
5018 155, 69, 135, 700, 771, 802, 832, 120, 831, 122,
5019 123, 154, 840, 154, 157, 645, 554, 647, 120, 158,
5020 122, 123, 155, 125, 66, 655, 1189, 657, 830, 97,
5021 98, 833, 69, 26, 1204, 568, 69, 570, 69, 1209,
5022 78, 1211, 840, 1213, 933, 135, 736, 159, 586, 152,
5023 56, 154, 153, 821, 157, 745, 824, 917, 918, 157,
5024 97, 98, 69, 923, 924, 98, 97, 98, 917, 918,
5025 838, 40, 41, 155, 923, 924, 69, 54, 1250, 78,
5026 122, 123, 896, 125, 152, 161, 154, 64, 65, 157,
5027 97, 98, 932, 1204, 795, 796, 913, 158, 912, 69,
5028 1211, 162, 803, 804, 97, 98, 1251, 933, 100, 901,
5029 1166, 903, 69, 810, 811, 913, 813, 154, 66, 67,
5030 1176, 1177, 69, 154, 66, 663, 949, 97, 98, 969,
5031 932, 290, 291, 830, 994, 1305, 833, 1307, 152, 927,
5032 97, 98, 1312, 135, 1314, 994, 948, 154, 69, 1009,
5033 97, 98, 853, 854, 135, 856, 857, 69, 682, 152,
5034 1009, 154, 859, 155, 157, 1335, 934, 969, 66, 937,
5035 135, 135, 940, 107, 122, 123, 97, 98, 120, 947,
5036 122, 123, 950, 69, 154, 97, 98, 711, 1028, 155,
5037 992, 993, 160, 890, 1305, 733, 66, 154, 56, 1001,
5038 1002, 992, 993, 69, 25, 135, 1046, 154, 909, 1065,
5039 139, 97, 98, 135, 1066, 912, 58, 69, 155, 66,
5040 69, 922, 120, 155, 122, 123, 1028, 125, 153, 100,
5041 927, 97, 98, 154, 1279, 932, 78, 155, 1283, 606,
5042 83, 84, 154, 100, 1046, 97, 98, 1049, 97, 98,
5043 120, 948, 122, 123, 158, 158, 1058, 1059, 625, 960,
5044 1062, 155, 1030, 155, 135, 155, 1106, 109, 154, 1109,
5045 1110, 113, 969, 120, 1163, 122, 123, 1079, 135, 1119,
5046 135, 911, 155, 913, 155, 52, 155, 155, 154, 1102,
5047 1181, 988, 989, 52, 153, 138, 139, 13, 155, 155,
5048 1102, 839, 154, 827, 1106, 154, 25, 1109, 1110, 1111,
5049 155, 17, 153, 837, 44, 682, 155, 1119, 155, 1016,
5050 858, 1018, 860, 1136, 135, 153, 44, 2, 155, 155,
5051 52, 1028, 54, 55, 1136, 57, 44, 1163, 876, 706,
5052 44, 16, 17, 135, 711, 1185, 137, 1149, 8, 1046,
5053 1152, 159, 1049, 886, 887, 1045, 15, 155, 891, 155,
5054 893, 155, 895, 52, 1166, 1167, 1168, 1256, 1257, 1171,
5055 1172, 155, 155, 155, 1176, 1177, 1232, 153, 53, 54,
5056 102, 155, 57, 1185, 155, 140, 54, 55, 755, 57,
5057 1203, 155, 101, 68, 9, 1197, 64, 65, 78, 155,
5058 52, 1203, 52, 140, 54, 55, 56, 57, 155, 1106,
5059 155, 86, 1109, 1110, 158, 95, 96, 1114, 160, 94,
5060 95, 56, 1119, 98, 99, 100, 101, 140, 103, 155,
5061 1256, 1257, 155, 1130, 1251, 155, 1250, 897, 898, 153,
5062 52, 1138, 54, 55, 56, 57, 906, 2, 908, 52,
5063 910, 56, 102, 1251, 155, 155, 1157, 101, 108, 1299,
5064 827, 16, 17, 143, 144, 145, 146, 147, 153, 140,
5065 837, 1140, 1141, 56, 998, 157, 155, 1279, 155, 155,
5066 252, 1283, 1284, 155, 851, 668, 669, 157, 1185, 155,
5067 102, 1188, 155, 155, 1262, 319, 484, 1299, 53, 54,
5068 1197, 155, 685, 686, 155, 488, 1039, 1040, 1041, 1042,
5069 155, 840, 99, 68, 1204, 101, 90, 477, 701, 1209,
5070 667, 1211, 928, 1213, 1134, 1188, 52, 1329, 54, 55,
5071 56, 57, 52, 729, 54, 55, 56, 57, 1062, 94,
5072 95, 878, 217, 98, 59, 60, 61, 62, 103, 1045,
5073 989, 1302, 843, 1250, 343, 1252, 1253, 40, 41, 42,
5074 43, 44, 1323, 1167, 1169, 1253, 241, 1169, 1165, 244,
5075 245, 110, 247, 523, 1252, 102, 1273, 252, 745, 742,
5076 215, 1209, 1204, 218, 219, 220, 1318, -1, -1, -1,
5077 -1, -1, -1, -1, 269, -1, -1, -1, -1, 1268,
5078 1269, -1, 1299, -1, -1, 1274, -1, 1276, 1277, -1,
5079 -1, -1, -1, -1, 289, 1305, -1, 1307, -1, 1249,
5080 -1, 1251, 1312, -1, 1314, -1, 1323, 1151, -1, -1,
5081 1154, 998, -1, -1, -1, -1, -1, 1175, -1, -1,
5082 -1, 1271, -1, -1, 319, 1335, 321, 322, 323, 324,
5083 1174, 326, 327, -1, -1, -1, 1325, 1326, 1327, 1328,
5084 -1, -1, 217, -1, -1, -1, 1199, 1034, -1, -1,
5085 1339, -1, 347, 348, -1, -1, -1, 1215, 1045, -1,
5086 -1, -1, -1, -1, -1, -1, 241, 1225, -1, 244,
5087 245, -1, 247, -1, -1, 1062, 1063, 252, -1, -1,
5088 -1, -1, -1, -1, 1242, 1243, 1244, -1, -1, 384,
5089 -1, 386, -1, -1, 269, -1, 391, 392, 393, -1,
5090 -1, 1245, 1246, 1247, 52, -1, 54, 55, 56, 57,
5091 58, -1, 407, -1, 917, 918, 78, -1, -1, -1,
5092 923, 924, -1, -1, -1, -1, -1, -1, -1, -1,
5093 78, -1, -1, 95, 96, -1, 431, -1, -1, -1,
5094 -1, -1, -1, -1, 319, 1132, 321, 322, 323, 324,
5095 1294, 326, 327, -1, 102, 958, 959, -1, 961, 962,
5096 455, 109, 110, -1, 1151, -1, -1, 1154, -1, -1,
5097 -1, 52, 347, 54, 55, 56, 57, 58, 140, 141,
5098 142, 143, 144, 145, 146, 147, -1, 1174, -1, -1,
5099 -1, -1, -1, 488, 142, 450, 451, 78, -1, -1,
5100 -1, -1, -1, -1, 459, -1, 1009, -1, -1, 384,
5101 505, 386, 507, -1, -1, -1, 391, 392, 393, -1,
5102 -1, 102, -1, -1, -1, -1, -1, 108, 109, 110,
5103 1033, -1, 407, 528, -1, -1, -1, 492, -1, 534,
5104 495, -1, -1, -1, -1, -1, -1, 52, -1, 54,
5105 55, 56, 57, 58, -1, -1, 431, -1, 1245, 1246,
5106 1247, 142, -1, -1, 145, -1, -1, -1, -1, -1,
5107 -1, -1, 1259, 78, -1, -1, -1, -1, 573, 574,
5108 455, 576, 577, -1, -1, -1, -1, 92, -1, -1,
5109 585, -1, 587, -1, -1, 590, -1, 102, -1, 33,
5110 34, 35, 36, 108, 109, 110, 561, 1294, -1, -1,
5111 -1, -1, -1, 488, -1, 49, 50, 51, 52, -1,
5112 -1, -1, 56, -1, -1, 59, 60, 61, 62, 63,
5113 585, 1318, 507, -1, -1, 590, -1, 142, -1, -1,
5114 145, 636, -1, 638, -1, -1, -1, -1, -1, -1,
5115 -1, 646, 157, 528, -1, -1, -1, 91, 92, 534,
5116 -1, 656, -1, 658, 659, 99, -1, -1, 102, -1,
5117 -1, 105, 106, 668, 669, -1, -1, 111, 112, 113,
5118 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
5119 -1, -1, -1, -1, -1, -1, -1, -1, 573, 574,
5120 695, 576, 577, -1, -1, -1, -1, 141, -1, -1,
5121 585, -1, 707, -1, 148, 590, 671, -1, -1, -1,
5122 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5123 -1, -1, 0, -1, 689, -1, 691, -1, -1, -1,
5124 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
5125 -1, -1, -1, -1, -1, -1, -1, 25, 26, 27,
5126 -1, 636, -1, 638, -1, 2, -1, -1, -1, 37,
5127 38, 646, 40, 41, 42, 43, 44, -1, -1, 16,
5128 17, 656, -1, 658, 659, 740, 781, -1, -1, -1,
5129 -1, -1, -1, 668, 669, -1, -1, -1, -1, -1,
5130 68, 69, -1, -1, -1, -1, 52, -1, 54, 55,
5131 56, 57, 58, -1, -1, -1, 53, 54, 773, -1,
5132 695, -1, -1, -1, -1, -1, -1, -1, -1, 97,
5133 98, 68, 78, -1, -1, 830, -1, 832, 833, -1,
5134 -1, -1, -1, -1, -1, -1, -1, 802, -1, 25,
5135 -1, -1, -1, 121, -1, -1, 102, 94, 95, -1,
5136 -1, 98, 108, 109, 110, -1, 103, -1, 823, -1,
5137 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5138 -1, -1, -1, -1, 152, 153, -1, -1, -1, 157,
5139 158, -1, 160, -1, 162, -1, 142, -1, -1, 145,
5140 -1, 896, 78, 79, 80, 81, 82, 83, 84, 85,
5141 86, 87, 88, 89, 90, -1, 162, 912, -1, 95,
5142 96, -1, 917, 918, -1, 101, -1, -1, 923, 924,
5143 -1, -1, -1, -1, -1, -1, -1, 932, 933, -1,
5144 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5145 905, -1, -1, 948, -1, 830, -1, 832, 833, -1,
5146 136, -1, 138, 139, 140, 141, 142, 143, 144, 145,
5147 146, 147, 927, -1, 969, -1, -1, -1, -1, -1,
5148 217, -1, -1, -1, -1, -1, -1, 942, -1, -1,
5149 -1, -1, -1, -1, -1, -1, -1, 992, 993, 994,
5150 -1, -1, -1, -1, 241, -1, -1, 244, 245, 964,
5151 247, -1, -1, -1, 1009, 252, -1, -1, -1, -1,
5152 -1, 896, -1, -1, -1, -1, -1, -1, -1, -1,
5153 -1, -1, 269, 1028, -1, 990, -1, 912, -1, -1,
5154 -1, -1, 917, 918, -1, -1, -1, -1, 923, 924,
5155 -1, 1046, -1, -1, 1049, -1, -1, 932, 933, -1,
5156 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5157 -1, -1, 1027, 948, -1, -1, -1, -1, -1, -1,
5158 -1, -1, 319, -1, 321, 322, 323, 324, -1, 326,
5159 327, -1, -1, -1, 969, -1, -1, -1, -1, -1,
5160 -1, -1, 1001, 1002, -1, -1, -1, 1102, -1, -1,
5161 347, 1106, -1, -1, 1109, 1110, -1, 992, 993, 994,
5162 -1, -1, -1, -1, 1119, -1, 52, -1, 54, 55,
5163 56, 57, 58, -1, 1009, -1, -1, -1, -1, -1,
5164 -1, 1136, -1, -1, -1, -1, -1, 384, -1, 386,
5165 -1, -1, 78, 1028, 391, 392, 393, 1112, -1, 1058,
5166 1059, -1, -1, 1062, -1, -1, 92, -1, 1163, -1,
5167 407, 1046, -1, -1, 1049, -1, 102, -1, -1, -1,
5168 1079, -1, 108, 109, 110, -1, -1, -1, -1, -1,
5169 1185, -1, -1, -1, 431, -1, -1, -1, -1, -1,
5170 -1, -1, 1197, -1, -1, -1, -1, -1, 1203, -1,
5171 -1, -1, 1111, -1, -1, -1, 142, -1, 455, 145,
5172 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5173 -1, 1106, -1, -1, 1109, 1110, -1, -1, -1, -1,
5174 -1, -1, -1, -1, 1119, -1, -1, -1, -1, 2,
5175 1149, 488, -1, 1152, -1, 1250, -1, -1, -1, -1,
5176 -1, 1256, 1257, 16, 17, -1, -1, 1166, 1167, 1168,
5177 507, -1, 1171, 1172, -1, -1, -1, 1176, 1177, -1,
5178 -1, -1, -1, -1, -1, -1, -1, -1, 1163, -1,
5179 -1, 528, -1, -1, -1, -1, -1, 534, -1, -1,
5180 53, 54, -1, -1, 1299, -1, -1, -1, 1001, 1002,
5181 1185, -1, -1, -1, -1, 68, -1, -1, -1, -1,
5182 -1, -1, 1197, -1, -1, -1, -1, -1, -1, -1,
5183 -1, -1, -1, -1, -1, -1, 573, 574, -1, 576,
5184 577, 94, 95, -1, -1, 98, -1, -1, 585, -1,
5185 103, -1, -1, 590, -1, -1, -1, -1, -1, -1,
5186 -1, 33, 34, 35, 36, 1058, 1059, -1, -1, 1062,
5187 -1, -1, -1, -1, -1, 1250, -1, 49, 50, 51,
5188 1279, 1256, 1257, -1, 1283, 1284, 1079, 59, 60, 61,
5189 62, 63, -1, -1, -1, -1, -1, -1, 2, 636,
5190 -1, 638, -1, -1, -1, -1, -1, -1, -1, 646,
5191 -1, 52, -1, 54, 55, 56, 57, 58, 1111, 656,
5192 -1, 658, 659, -1, 1299, -1, -1, -1, -1, -1,
5193 1329, 668, 669, -1, -1, -1, -1, 78, -1, 111,
5194 112, 113, 114, 115, 116, 117, 118, 119, -1, 53,
5195 54, 92, -1, 57, -1, -1, 1149, -1, 695, 1152,
5196 -1, 102, -1, -1, 217, -1, -1, -1, 109, 110,
5197 -1, -1, -1, 1166, 1167, 1168, 148, -1, 1171, 1172,
5198 -1, -1, 86, 1176, 1177, -1, -1, -1, 241, -1,
5199 -1, 244, 245, -1, 247, 99, 100, 101, -1, 252,
5200 -1, 142, -1, -1, -1, 44, -1, -1, -1, -1,
5201 -1, -1, -1, -1, -1, -1, 269, -1, -1, -1,
5202 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5203 -1, -1, -1, -1, -1, -1, -1, -1, -1, 78,
5204 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
5205 89, 90, -1, -1, -1, -1, 95, 96, -1, -1,
5206 -1, -1, -1, -1, -1, -1, 319, -1, 321, 322,
5207 323, 324, -1, 326, 327, -1, -1, -1, -1, -1,
5208 -1, -1, -1, -1, -1, -1, 1279, -1, -1, -1,
5209 1283, 1284, -1, 830, 347, 832, 833, 136, -1, 138,
5210 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
5211 -1, -1, -1, 217, -1, -1, 155, -1, -1, -1,
5212 -1, 2, -1, -1, -1, -1, -1, -1, -1, -1,
5213 -1, 384, -1, 386, -1, -1, 1329, -1, 391, 392,
5214 393, -1, -1, -1, -1, -1, -1, -1, 252, -1,
5215 -1, -1, -1, -1, 407, -1, -1, -1, -1, 896,
5216 -1, -1, -1, -1, -1, 269, -1, -1, 1001, 1002,
5217 -1, -1, 53, 54, -1, 912, 57, -1, 431, -1,
5218 917, 918, -1, -1, -1, 289, 923, 924, -1, -1,
5219 -1, -1, -1, -1, -1, 932, 933, -1, -1, -1,
5220 -1, -1, 455, -1, -1, 86, -1, -1, -1, -1,
5221 -1, 948, -1, -1, -1, 319, -1, -1, 99, 100,
5222 101, -1, -1, -1, -1, 1058, 1059, -1, -1, 1062,
5223 -1, -1, 969, -1, -1, 488, -1, -1, -1, -1,
5224 -1, -1, -1, 347, 348, -1, 1079, 1001, 1002, -1,
5225 -1, -1, -1, -1, 507, 992, 993, 994, -1, -1,
5226 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5227 -1, -1, 1009, -1, -1, 528, -1, -1, 1111, -1,
5228 -1, 534, 386, -1, -1, -1, -1, 391, -1, 393,
5229 -1, 1028, -1, -1, -1, -1, -1, -1, -1, -1,
5230 -1, -1, -1, -1, 1058, 1059, -1, -1, 1062, 1046,
5231 -1, -1, 1049, -1, -1, -1, 1149, -1, -1, 1152,
5232 573, 574, -1, 576, 577, 1079, -1, -1, -1, -1,
5233 -1, -1, 585, 1166, 1167, 1168, 217, 590, 1171, 1172,
5234 -1, -1, -1, 1176, 1177, -1, -1, -1, -1, -1,
5235 -1, -1, -1, -1, -1, -1, -1, 1111, -1, -1,
5236 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1106,
5237 -1, 252, 1109, 1110, -1, -1, -1, -1, -1, -1,
5238 -1, -1, 1119, 636, 488, 638, -1, -1, 269, -1,
5239 -1, -1, -1, 646, -1, 1149, -1, -1, 1152, -1,
5240 -1, 505, -1, 656, -1, 658, 659, -1, 289, -1,
5241 -1, -1, 1166, 1167, 1168, 668, 669, 1171, 1172, -1,
5242 -1, -1, 1176, 1177, 528, -1, 1163, -1, -1, -1,
5243 534, -1, -1, -1, -1, -1, -1, -1, 319, -1,
5244 -1, -1, 695, -1, -1, -1, 1279, -1, 1185, -1,
5245 1283, 1284, -1, -1, -1, -1, -1, -1, -1, -1,
5246 1197, -1, -1, -1, -1, -1, 347, 348, -1, -1,
5247 574, -1, -1, 577, -1, -1, -1, -1, -1, -1,
5248 -1, -1, -1, 587, 2, -1, 590, -1, -1, -1,
5249 -1, -1, -1, -1, -1, -1, 1329, -1, -1, -1,
5250 -1, -1, -1, -1, -1, 386, -1, -1, -1, -1,
5251 391, -1, 393, 1250, -1, -1, -1, -1, -1, 1256,
5252 1257, -1, -1, -1, -1, 1279, -1, -1, -1, 1283,
5253 1284, -1, 636, -1, 638, 53, 54, -1, -1, 57,
5254 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5255 -1, -1, -1, -1, 658, -1, -1, -1, -1, -1,
5256 -1, -1, 1299, -1, 668, 669, -1, -1, 86, -1,
5257 -1, -1, -1, -1, -1, 1329, -1, 830, -1, 832,
5258 833, 99, 100, 101, 2, -1, -1, -1, -1, -1,
5259 -1, -1, -1, -1, 1001, 1002, -1, -1, -1, -1,
5260 -1, -1, -1, 707, -1, -1, -1, 488, -1, -1,
5261 -1, -1, 716, -1, -1, -1, -1, -1, -1, -1,
5262 -1, -1, -1, -1, 505, -1, -1, -1, -1, -1,
5263 -1, -1, -1, -1, -1, 53, 54, -1, -1, 57,
5264 -1, -1, -1, 896, -1, -1, -1, 528, -1, -1,
5265 -1, 1058, 1059, 534, -1, 1062, -1, -1, -1, 912,
5266 -1, -1, -1, -1, 917, 918, -1, -1, 86, -1,
5267 923, 924, 1079, -1, -1, -1, -1, 781, -1, 932,
5268 933, 99, 100, 101, 102, -1, -1, -1, -1, -1,
5269 -1, -1, -1, 574, -1, 948, 577, -1, -1, 217,
5270 -1, -1, -1, -1, 1111, -1, 587, -1, -1, 590,
5271 -1, -1, -1, -1, -1, -1, 969, -1, -1, -1,
5272 -1, -1, -1, -1, -1, -1, 830, -1, -1, 833,
5273 -1, -1, -1, -1, 252, -1, -1, -1, -1, 992,
5274 993, 994, 1149, -1, -1, 1152, -1, -1, -1, -1,
5275 -1, 269, -1, -1, -1, 636, 1009, 638, -1, 1166,
5276 1167, 1168, -1, -1, 1171, 1172, -1, -1, -1, 1176,
5277 1177, 289, -1, -1, -1, 1028, -1, 658, -1, -1,
5278 -1, -1, -1, -1, -1, -1, -1, 668, 669, -1,
5279 -1, -1, -1, 1046, -1, -1, 1049, -1, -1, 217,
5280 -1, 319, -1, -1, -1, -1, -1, -1, -1, -1,
5281 -1, -1, -1, 917, 918, -1, -1, -1, -1, 923,
5282 924, -1, -1, -1, -1, -1, 707, -1, 932, 347,
5283 348, -1, -1, -1, 252, -1, -1, -1, -1, -1,
5284 -1, -1, -1, -1, 948, -1, -1, -1, -1, -1,
5285 -1, 269, -1, 1106, -1, -1, 1109, 1110, -1, -1,
5286 -1, -1, -1, -1, -1, 969, 1119, -1, 386, -1,
5287 -1, 289, 1279, 391, -1, 393, 1283, 1284, -1, -1,
5288 -1, -1, -1, -1, -1, -1, -1, -1, 992, 993,
5289 994, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5290 781, 319, -1, -1, -1, 1009, -1, -1, -1, -1,
5291 1163, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5292 -1, -1, 1329, -1, 1028, -1, -1, -1, -1, 347,
5293 348, -1, 1185, -1, -1, -1, -1, 2, -1, -1,
5294 -1, -1, 1046, -1, 1197, 1049, -1, -1, -1, 830,
5295 -1, -1, 833, -1, -1, -1, -1, -1, -1, -1,
5296 -1, -1, -1, -1, -1, -1, 1001, 1002, 386, -1,
5297 488, -1, -1, 391, -1, 393, -1, -1, -1, -1,
5298 -1, -1, -1, -1, -1, -1, -1, 505, 53, 54,
5299 -1, -1, -1, -1, -1, -1, -1, 1250, 1102, -1,
5300 -1, -1, 1106, 1256, 1257, 1109, 1110, -1, -1, -1,
5301 528, -1, -1, -1, -1, 1119, 534, -1, -1, -1,
5302 -1, -1, -1, 1058, 1059, -1, -1, 1062, -1, -1,
5303 -1, -1, 1136, -1, 99, -1, 917, 918, -1, -1,
5304 -1, -1, 923, 924, 1079, -1, 1299, -1, -1, -1,
5305 -1, 932, -1, -1, -1, -1, 574, -1, -1, 577,
5306 -1, -1, -1, -1, -1, -1, -1, 948, -1, 587,
5307 488, -1, 590, -1, -1, -1, 1111, -1, -1, -1,
5308 -1, 1185, -1, -1, -1, -1, -1, 505, 969, -1,
5309 -1, -1, -1, 1197, -1, -1, -1, -1, -1, 1203,
5310 -1, -1, -1, -1, -1, 1001, 1002, -1, -1, -1,
5311 528, 992, 993, 994, 1149, -1, 534, 1152, 636, -1,
5312 638, -1, -1, -1, -1, -1, -1, -1, 1009, -1,
5313 -1, 1166, 1167, 1168, -1, -1, 1171, 1172, -1, -1,
5314 658, 1176, 1177, -1, -1, -1, -1, 1028, -1, -1,
5315 668, 669, 217, -1, 2, -1, 574, -1, -1, 577,
5316 -1, -1, 1058, 1059, -1, 1046, 1062, -1, 1049, 587,
5317 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5318 -1, -1, -1, 1079, -1, -1, -1, 252, -1, 707,
5319 -1, -1, -1, -1, -1, 1299, -1, -1, -1, -1,
5320 -1, 1001, 1002, -1, 269, 53, 54, -1, -1, -1,
5321 -1, -1, -1, -1, -1, 1111, -1, -1, 636, -1,
5322 638, 1102, -1, -1, -1, 1106, -1, -1, 1109, 1110,
5323 -1, -1, -1, -1, -1, -1, -1, -1, 1119, -1,
5324 658, -1, -1, -1, 1279, -1, -1, -1, 1283, 1284,
5325 -1, -1, -1, 1149, 319, 1136, 1152, -1, 1058, 1059,
5326 -1, -1, 1062, 781, -1, -1, -1, -1, -1, -1,
5327 1166, 1167, 1168, -1, -1, 1171, 1172, -1, -1, 1079,
5328 1176, 1177, 347, 1001, 1002, -1, -1, -1, -1, 707,
5329 -1, -1, -1, -1, 1329, -1, -1, -1, -1, -1,
5330 -1, -1, -1, -1, 1185, -1, -1, -1, -1, -1,
5331 -1, 1111, 830, -1, -1, 833, 1197, -1, -1, -1,
5332 -1, 386, 1203, -1, -1, -1, 391, -1, 393, -1,
5333 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5334 1058, 1059, -1, -1, 1062, -1, -1, -1, -1, 1149,
5335 -1, -1, 1152, -1, -1, -1, -1, -1, -1, -1,
5336 -1, 1079, -1, 781, -1, -1, 1166, 1167, 1168, 217,
5337 -1, 1171, 1172, -1, -1, -1, 1176, 1177, -1, -1,
5338 -1, -1, -1, 1279, -1, -1, -1, 1283, 1284, -1,
5339 -1, -1, -1, 1111, -1, -1, -1, -1, -1, 917,
5340 918, -1, -1, -1, 252, 923, 924, -1, -1, -1,
5341 -1, -1, 830, -1, 932, 833, -1, -1, 1299, -1,
5342 -1, 269, -1, 488, -1, -1, -1, -1, -1, -1,
5343 948, 1149, -1, 1329, 1152, -1, -1, -1, -1, -1,
5344 -1, -1, -1, -1, -1, -1, -1, -1, 1166, 1167,
5345 1168, 969, -1, 1171, 1172, -1, -1, -1, 1176, 1177,
5346 -1, -1, -1, 528, -1, -1, -1, -1, -1, 534,
5347 -1, 319, -1, -1, 992, 993, 994, -1, -1, 1279,
5348 -1, -1, -1, 1283, 1284, -1, -1, -1, -1, -1,
5349 -1, 1009, -1, -1, -1, -1, -1, -1, -1, 347,
5350 -1, -1, -1, -1, -1, -1, -1, -1, -1, 574,
5351 1028, -1, 577, -1, 932, -1, -1, -1, -1, -1,
5352 -1, -1, -1, -1, -1, 590, -1, -1, 1046, 1329,
5353 948, 1049, -1, -1, -1, -1, -1, -1, 386, -1,
5354 -1, -1, -1, 391, -1, 393, -1, -1, -1, -1,
5355 -1, 969, -1, -1, -1, -1, -1, -1, -1, -1,
5356 -1, 1279, -1, -1, -1, 1283, 1284, -1, -1, -1,
5357 -1, 636, -1, 638, 992, 993, -1, -1, -1, 33,
5358 34, 35, 36, -1, 1102, -1, -1, -1, 1106, -1,
5359 -1, 1109, 1110, 658, -1, 49, 50, 51, 52, -1,
5360 -1, 1119, 56, 668, 669, 59, 60, 61, 62, 63,
5361 1028, 1329, -1, -1, -1, -1, -1, -1, 1136, -1,
5362 -1, -1, -1, -1, -1, -1, -1, -1, 1046, -1,
5363 -1, 1049, -1, -1, -1, -1, -1, 91, 92, -1,
5364 488, -1, -1, -1, -1, 99, -1, -1, 102, -1,
5365 -1, 105, 106, -1, 108, -1, -1, 111, 112, 113,
5366 114, 115, 116, 117, 118, 119, -1, 1185, -1, -1,
5367 -1, -1, 16, 17, -1, -1, -1, -1, -1, 1197,
5368 528, -1, -1, -1, 1102, 1203, 534, 141, 1106, -1,
5369 -1, 1109, 1110, -1, 148, -1, -1, -1, -1, -1,
5370 -1, 1119, -1, -1, 48, 49, 50, 51, 162, -1,
5371 -1, 55, 56, -1, -1, -1, -1, -1, 1136, -1,
5372 -1, -1, -1, -1, 68, 69, 574, -1, -1, 577,
5373 -1, 78, 79, 80, 81, 82, 83, 84, 85, -1,
5374 87, 88, 590, -1, -1, -1, -1, -1, 95, 96,
5375 -1, -1, -1, -1, -1, -1, -1, -1, -1, 103,
5376 -1, -1, -1, -1, -1, 830, -1, 1185, 833, -1,
5377 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1197,
5378 -1, 1299, -1, -1, -1, 1203, -1, -1, 636, -1,
5379 638, 138, 139, 140, 141, 142, 143, 144, 145, 146,
5380 147, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5381 658, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5382 668, 669, -1, -1, -1, -1, -1, -1, -1, -1,
5383 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5384 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5385 -1, -1, 917, 918, -1, -1, -1, -1, 923, 924,
5386 -1, -1, -1, -1, -1, -1, -1, 932, -1, -1,
5387 -1, 215, -1, -1, 218, 219, 220, -1, 222, -1,
5388 -1, 1299, -1, 948, -1, -1, -1, -1, -1, 33,
5389 34, 35, 36, -1, -1, -1, -1, 241, -1, -1,
5390 244, -1, -1, -1, 969, 49, 50, 51, 52, -1,
5391 -1, -1, 56, -1, 58, 59, 60, 61, 62, 63,
5392 -1, -1, -1, -1, -1, -1, -1, 992, 993, 994,
5393 -1, -1, -1, -1, 78, -1, -1, -1, -1, -1,
5394 -1, -1, -1, -1, 1009, -1, -1, 91, 92, -1,
5395 -1, -1, -1, -1, -1, 99, -1, -1, 102, -1,
5396 -1, 105, 106, 1028, 108, 109, -1, 111, 112, 113,
5397 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
5398 -1, 1046, 830, -1, 1049, 833, -1, -1, -1, -1,
5399 -1, -1, -1, -1, -1, -1, -1, 141, -1, -1,
5400 -1, -1, -1, -1, 148, -1, -1, -1, 352, 353,
5401 354, 355, 356, -1, -1, 359, 360, 361, 362, 363,
5402 364, 365, 366, -1, 368, -1, -1, 371, 372, 373,
5403 374, 375, 376, 377, 378, 379, 380, 1102, -1, -1,
5404 384, 1106, -1, -1, 1109, 1110, -1, -1, -1, -1,
5405 -1, -1, -1, -1, 1119, -1, -1, -1, -1, -1,
5406 -1, -1, -1, -1, -1, -1, -1, -1, -1, 917,
5407 918, -1, -1, -1, -1, 923, 924, -1, -1, -1,
5408 -1, -1, -1, -1, 932, -1, -1, 431, -1, -1,
5409 -1, -1, -1, -1, -1, -1, -1, -1, 52, 53,
5410 948, -1, 56, -1, -1, -1, 450, 451, -1, -1,
5411 -1, 455, -1, -1, -1, 459, -1, 461, -1, -1,
5412 1185, 969, 76, 77, 78, 79, 80, 81, 82, 83,
5413 84, -1, 1197, 87, 88, 479, -1, -1, -1, 93,
5414 94, 95, 96, -1, 992, 993, 994, -1, 492, -1,
5415 -1, 495, -1, -1, 108, 109, -1, -1, -1, -1,
5416 -1, 1009, -1, 507, -1, -1, -1, -1, -1, -1,
5417 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5418 1028, 525, -1, -1, 138, 139, 140, 141, 142, 143,
5419 144, 145, 146, 147, -1, 149, 150, -1, 1046, -1,
5420 -1, 1049, 156, 157, -1, -1, -1, -1, -1, -1,
5421 -1, -1, -1, -1, -1, -1, -1, 561, 78, 79,
5422 80, 81, 82, 83, 84, -1, -1, 87, 88, 573,
5423 -1, -1, 576, -1, 1299, 95, 96, -1, -1, -1,
5424 -1, 585, -1, -1, -1, -1, 590, -1, -1, -1,
5425 -1, -1, -1, -1, -1, -1, -1, -1, 1106, -1,
5426 -1, 1109, 1110, -1, -1, -1, -1, -1, -1, -1,
5427 -1, 1119, -1, -1, -1, -1, -1, -1, 138, 139,
5428 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
5429 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5430 -1, -1, 646, -1, -1, -1, -1, -1, -1, -1,
5431 -1, -1, 656, -1, -1, -1, -1, -1, -1, -1,
5432 -1, -1, -1, -1, 668, 669, -1, 671, 672, 673,
5433 674, -1, -1, -1, -1, -1, -1, 1185, -1, -1,
5434 -1, 685, 686, -1, -1, 689, -1, 691, -1, 1197,
5435 -1, -1, -1, -1, -1, -1, -1, 701, 0, 1,
5436 -1, 3, 4, 5, 6, 7, -1, -1, -1, 11,
5437 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
5438 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
5439 32, 33, 34, 35, 36, -1, 740, 39, -1, -1,
5440 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5441 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5442 62, 63, 64, 65, -1, -1, -1, -1, -1, 773,
5443 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
5444 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
5445 92, 1299, -1, -1, -1, -1, -1, 99, 802, -1,
5446 102, 103, -1, 105, 106, -1, 108, -1, -1, 111,
5447 112, 113, 114, 115, 116, 117, 118, 119, -1, 823,
5448 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5449 -1, -1, -1, -1, -1, -1, -1, -1, 52, 53,
5450 -1, -1, 56, -1, -1, -1, 148, 149, 150, -1,
5451 -1, -1, -1, -1, -1, -1, -1, -1, 160, -1,
5452 162, -1, 76, 77, 78, 79, 80, 81, 82, 83,
5453 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
5454 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
5455 -1, -1, 896, -1, 108, 109, -1, -1, -1, -1,
5456 -1, 905, -1, -1, -1, -1, -1, -1, 912, -1,
5457 -1, -1, 916, 917, 918, -1, -1, -1, -1, 923,
5458 924, -1, -1, 927, 138, 139, 140, 141, 142, 143,
5459 144, 145, 146, 147, -1, 149, 150, -1, 942, -1,
5460 -1, -1, 156, 157, -1, -1, -1, -1, -1, -1,
5461 -1, -1, -1, 957, 958, 959, -1, 961, 962, -1,
5462 964, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5463 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5464 -1, -1, 986, 987, -1, -1, 990, -1, -1, -1,
5465 994, 995, -1, -1, -1, -1, -1, -1, -1, -1,
5466 -1, -1, -1, -1, -1, 1009, -1, -1, -1, -1,
5467 -1, -1, -1, -1, 0, 1, -1, 3, 4, 5,
5468 6, 7, -1, 1027, -1, 11, 12, -1, -1, 1033,
5469 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
5470 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
5471 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
5472 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
5473 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
5474 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5475 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
5476 -1, -1, -1, -1, -1, 91, 92, -1, 1112, -1,
5477 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
5478 106, -1, 108, -1, -1, 111, 112, 113, 114, 115,
5479 116, 117, 118, 119, -1, 121, -1, -1, -1, -1,
5480 0, -1, -1, -1, -1, -1, -1, -1, 8, 9,
5481 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
5482 -1, -1, 148, 149, 150, 25, 26, 27, 28, 29,
5483 -1, -1, -1, -1, 160, -1, 162, 37, 38, -1,
5484 40, 41, 42, 43, 44, -1, -1, -1, 78, 79,
5485 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
5486 90, -1, -1, -1, -1, 95, 96, -1, 68, 69,
5487 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
5488 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
5489 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
5490 100, 101, -1, -1, -1, -1, 1250, 107, 138, 139,
5491 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
5492 -1, 121, -1, -1, 124, -1, -1, -1, -1, -1,
5493 -1, -1, -1, -1, -1, 135, 136, 137, 138, 139,
5494 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
5495 -1, -1, 152, 153, 154, 155, 0, -1, 158, 159,
5496 160, -1, 162, -1, 8, 9, 10, -1, -1, 13,
5497 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
5498 -1, 25, -1, 27, 28, 29, -1, -1, -1, -1,
5499 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
5500 44, -1, -1, -1, 78, 79, 80, 81, 82, 83,
5501 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
5502 -1, 95, 96, -1, 68, 69, -1, -1, -1, -1,
5503 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
5504 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
5505 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
5506 -1, -1, 136, 107, 138, 139, 140, 141, 142, 143,
5507 144, 145, 146, 147, -1, -1, -1, 121, -1, -1,
5508 124, -1, -1, -1, -1, -1, -1, -1, 162, -1,
5509 -1, 135, 136, 137, 138, 139, 140, 141, 142, 143,
5510 144, 145, 146, 147, -1, -1, -1, -1, -1, 153,
5511 154, 155, 0, -1, 158, 159, 160, -1, 162, -1,
5512 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
5513 -1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
5514 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
5515 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
5516 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5517 88, 89, 90, -1, -1, -1, -1, 95, 96, -1,
5518 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
5519 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5520 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
5521 98, -1, 100, 101, -1, -1, -1, -1, 136, 107,
5522 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5523 -1, -1, -1, 121, -1, -1, 124, -1, -1, -1,
5524 -1, -1, -1, -1, -1, -1, -1, 135, 136, 137,
5525 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5526 -1, -1, -1, -1, -1, 153, 154, 155, 0, -1,
5527 158, 159, 160, -1, 162, -1, 8, 9, 10, -1,
5528 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
5529 -1, -1, -1, 25, 26, 27, 28, 29, -1, -1,
5530 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
5531 42, 43, 44, -1, -1, -1, 78, 79, 80, 81,
5532 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
5533 -1, -1, -1, 95, 96, -1, 68, 69, -1, -1,
5534 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
5535 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
5536 -1, -1, -1, 95, 96, 97, 98, -1, -1, 101,
5537 -1, -1, -1, -1, -1, 107, 138, 139, 140, 141,
5538 142, 143, 144, 145, 146, 147, -1, -1, -1, 121,
5539 -1, -1, 124, -1, -1, -1, -1, -1, -1, -1,
5540 -1, -1, -1, -1, 136, 137, 138, 139, 140, 141,
5541 142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
5542 152, 153, 154, 155, 0, -1, 158, 159, 160, -1,
5543 162, -1, 8, 9, 10, -1, -1, 13, 14, 15,
5544 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
5545 26, 27, 28, 29, -1, -1, -1, -1, -1, -1,
5546 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
5547 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5548 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5549 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
5550 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
5551 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
5552 96, 97, 98, -1, -1, 101, -1, -1, -1, -1,
5553 -1, 107, -1, -1, -1, -1, -1, -1, -1, -1,
5554 -1, -1, -1, -1, -1, 121, -1, -1, 124, -1,
5555 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5556 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
5557 146, 147, -1, -1, -1, -1, 152, 153, 154, 155,
5558 0, -1, 158, 159, 160, -1, 162, -1, 8, 9,
5559 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
5560 -1, -1, -1, -1, -1, 25, 26, 27, 28, -1,
5561 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
5562 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
5563 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5564 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
5565 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
5566 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
5567 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
5568 -1, 101, -1, -1, -1, -1, -1, 107, -1, -1,
5569 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5570 -1, 121, -1, -1, -1, -1, -1, -1, -1, -1,
5571 -1, -1, -1, -1, -1, -1, 136, -1, 138, 139,
5572 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
5573 -1, -1, 152, 153, 154, 155, 0, 157, 158, 159,
5574 160, -1, 162, -1, 8, 9, 10, -1, -1, 13,
5575 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
5576 -1, 25, -1, 27, 28, 29, -1, -1, -1, -1,
5577 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
5578 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5579 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5580 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
5581 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
5582 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
5583 -1, 95, 96, 97, 98, -1, -1, 101, -1, -1,
5584 -1, -1, -1, 107, -1, -1, -1, -1, -1, -1,
5585 -1, -1, -1, -1, -1, -1, -1, 121, -1, -1,
5586 124, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5587 -1, -1, 136, 137, 138, 139, 140, 141, 142, 143,
5588 144, 145, 146, 147, -1, -1, -1, -1, -1, 153,
5589 154, 155, 0, -1, 158, 159, 160, -1, 162, -1,
5590 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
5591 -1, -1, -1, -1, -1, -1, -1, 25, 26, 27,
5592 28, -1, -1, -1, -1, -1, -1, -1, -1, 37,
5593 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
5594 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5595 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5596 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
5597 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5598 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
5599 98, -1, -1, 101, -1, -1, -1, -1, -1, 107,
5600 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5601 -1, -1, -1, 121, -1, -1, -1, -1, -1, -1,
5602 -1, -1, -1, -1, -1, -1, -1, -1, 136, -1,
5603 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5604 -1, -1, -1, -1, 152, 153, 154, 155, 0, 157,
5605 158, 159, 160, -1, 162, -1, 8, 9, 10, -1,
5606 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
5607 -1, -1, -1, 25, -1, 27, 28, -1, -1, -1,
5608 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
5609 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
5610 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5611 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
5612 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
5613 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
5614 -1, -1, -1, 95, 96, 97, 98, -1, 100, 101,
5615 -1, -1, -1, -1, -1, 107, -1, -1, -1, -1,
5616 -1, -1, -1, -1, -1, -1, -1, -1, -1, 121,
5617 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5618 -1, -1, -1, 135, 136, -1, 138, 139, 140, 141,
5619 142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
5620 152, 153, 154, 155, 0, -1, 158, 159, 160, -1,
5621 162, -1, 8, 9, 10, -1, -1, 13, 14, 15,
5622 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
5623 -1, 27, 28, -1, -1, -1, -1, -1, -1, -1,
5624 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
5625 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5626 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5627 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
5628 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
5629 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
5630 96, 97, 98, -1, -1, 101, -1, -1, -1, -1,
5631 -1, 107, -1, -1, -1, -1, -1, -1, -1, -1,
5632 -1, -1, -1, -1, -1, 121, -1, -1, -1, -1,
5633 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5634 136, -1, 138, 139, 140, 141, 142, 143, 144, 145,
5635 146, 147, -1, -1, -1, -1, -1, 153, 154, 155,
5636 0, 157, 158, 159, 160, -1, 162, -1, 8, 9,
5637 10, 44, -1, -1, 14, 15, -1, 17, -1, -1,
5638 -1, -1, -1, -1, -1, 25, 26, -1, -1, -1,
5639 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
5640 40, 41, 42, 43, 44, 78, 79, 80, 81, 82,
5641 83, 84, 85, 86, 87, 88, 89, 90, -1, -1,
5642 -1, -1, 95, 96, -1, -1, -1, -1, 68, 69,
5643 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
5644 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
5645 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
5646 100, 101, -1, 136, -1, 138, 139, 140, 141, 142,
5647 143, 144, 145, 146, 147, -1, -1, -1, -1, -1,
5648 -1, 121, -1, -1, -1, -1, -1, -1, -1, -1,
5649 -1, -1, -1, -1, -1, 135, 136, -1, 138, 139,
5650 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
5651 -1, -1, 152, 153, 154, 155, 0, -1, 158, -1,
5652 160, -1, 162, -1, 8, 9, 10, -1, -1, -1,
5653 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
5654 -1, 25, 26, -1, -1, -1, -1, -1, -1, -1,
5655 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
5656 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5657 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5658 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
5659 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
5660 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
5661 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
5662 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5663 -1, -1, -1, -1, -1, -1, -1, 121, -1, -1,
5664 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5665 -1, 135, 136, -1, 138, 139, 140, 141, 142, 143,
5666 144, 145, 146, 147, -1, -1, -1, -1, 152, 153,
5667 154, 155, 0, -1, 158, -1, 160, -1, 162, -1,
5668 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
5669 -1, -1, -1, -1, -1, -1, -1, 25, -1, -1,
5670 -1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
5671 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
5672 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5673 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5674 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
5675 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5676 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
5677 98, -1, 100, 101, -1, -1, -1, -1, -1, -1,
5678 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5679 -1, -1, -1, 121, -1, -1, -1, -1, -1, -1,
5680 -1, -1, -1, -1, -1, -1, -1, 135, 136, -1,
5681 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5682 -1, -1, -1, -1, 152, 153, 154, 155, 0, -1,
5683 158, -1, 160, -1, 162, -1, 8, 9, 10, -1,
5684 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
5685 -1, -1, -1, 25, -1, -1, -1, -1, -1, -1,
5686 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
5687 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
5688 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5689 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
5690 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
5691 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
5692 -1, -1, -1, 95, 96, 97, 98, -1, 100, 101,
5693 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5694 -1, -1, -1, -1, -1, -1, -1, -1, -1, 121,
5695 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5696 -1, -1, -1, 135, 136, -1, 138, 139, 140, 141,
5697 142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
5698 152, 153, 154, 155, -1, -1, 158, -1, 160, 1,
5699 162, 3, 4, 5, 6, 7, 8, 9, 10, 11,
5700 12, -1, -1, 15, 16, -1, 18, 19, 20, 21,
5701 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
5702 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
5703 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5704 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5705 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
5706 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
5707 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
5708 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
5709 102, 103, -1, 105, 106, -1, 108, -1, -1, 111,
5710 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
5711 -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
5712 10, 11, 12, -1, 14, 15, 16, -1, 18, 19,
5713 20, 21, 22, 23, 24, -1, 148, 149, 150, -1,
5714 30, 31, 32, 33, 34, 35, 36, -1, 160, 39,
5715 162, -1, -1, -1, -1, 45, 46, 47, 48, 49,
5716 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5717 60, 61, 62, 63, 64, 65, -1, -1, 68, -1,
5718 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
5719 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5720 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
5721 -1, -1, 102, 103, -1, 105, 106, -1, 108, -1,
5722 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
5723 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
5724 -1, -1, 10, 11, 12, -1, -1, 15, 16, 17,
5725 18, 19, 20, 21, 22, 23, 24, -1, 148, 149,
5726 150, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5727 160, 39, 162, -1, -1, -1, -1, 45, 46, 47,
5728 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5729 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5730 68, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5731 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5732 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5733 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5734 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5735 118, 119, -1, -1, -1, 1, -1, 3, 4, 5,
5736 6, 7, -1, -1, 10, 11, 12, -1, -1, 15,
5737 16, -1, 18, 19, 20, 21, 22, 23, 24, 25,
5738 148, 149, 150, -1, 30, 31, 32, 33, 34, 35,
5739 36, -1, 160, 39, 162, -1, -1, -1, -1, 45,
5740 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
5741 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
5742 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
5743 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
5744 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
5745 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
5746 106, -1, 108, -1, -1, 111, 112, 113, 114, 115,
5747 116, 117, 118, 119, -1, -1, -1, 1, -1, 3,
5748 4, 5, 6, 7, -1, -1, 10, 11, 12, -1,
5749 -1, 15, 16, -1, 18, 19, 20, 21, 22, 23,
5750 24, -1, 148, 149, 150, -1, 30, 31, 32, 33,
5751 34, 35, 36, -1, 160, 39, 162, -1, -1, -1,
5752 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
5753 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
5754 64, 65, -1, -1, 68, -1, -1, -1, -1, -1,
5755 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
5756 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
5757 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
5758 -1, 105, 106, -1, 108, -1, -1, 111, 112, 113,
5759 114, 115, 116, 117, 118, 119, -1, -1, -1, 1,
5760 -1, 3, 4, 5, 6, 7, -1, 9, 10, 11,
5761 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
5762 22, 23, 24, -1, 148, 149, 150, -1, 30, 31,
5763 32, 33, 34, 35, 36, -1, 160, 39, 162, -1,
5764 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5765 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5766 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
5767 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
5768 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
5769 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
5770 102, 103, -1, 105, 106, -1, 108, -1, -1, 111,
5771 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
5772 -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
5773 10, 11, 12, -1, -1, -1, 16, -1, 18, 19,
5774 20, 21, 22, 23, 24, -1, 148, 149, 150, -1,
5775 30, 31, 32, 33, 34, 35, 36, -1, 160, 39,
5776 162, -1, -1, -1, -1, 45, 46, 47, 48, 49,
5777 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5778 60, 61, 62, 63, 64, 65, -1, -1, 68, -1,
5779 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
5780 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5781 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
5782 -1, -1, 102, 103, -1, 105, 106, -1, 108, -1,
5783 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
5784 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
5785 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5786 18, 19, 20, 21, 22, 23, 24, -1, 148, 149,
5787 150, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5788 160, 39, 162, -1, -1, -1, -1, 45, 46, 47,
5789 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5790 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5791 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5792 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5793 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5794 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5795 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5796 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5797 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5798 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5799 148, 149, 150, -1, -1, -1, -1, -1, -1, -1,
5800 158, -1, 160, 1, 162, 3, 4, 5, 6, 7,
5801 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5802 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5803 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5804 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5805 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5806 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5807 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5808 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5809 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5810 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5811 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5812 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5813 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5814 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5815 148, 149, 150, -1, -1, -1, -1, -1, -1, -1,
5816 158, -1, 160, 1, 162, 3, 4, 5, 6, 7,
5817 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5818 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5819 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5820 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5821 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5822 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5823 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5824 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5825 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5826 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5827 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5828 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5829 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5830 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5831 148, 149, 150, -1, -1, 153, -1, -1, -1, -1,
5832 -1, -1, 160, 1, 162, 3, 4, 5, 6, 7,
5833 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5834 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5835 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5836 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5837 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5838 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5839 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5840 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5841 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5842 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5843 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5844 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5845 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5846 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5847 148, 149, 150, -1, -1, 153, -1, 1, -1, 3,
5848 4, 5, 160, 7, 162, -1, -1, 11, 12, -1,
5849 -1, -1, 16, 17, 18, 19, 20, 21, 22, 23,
5850 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
5851 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
5852 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
5853 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
5854 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
5855 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
5856 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
5857 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
5858 -1, 105, 106, -1, -1, -1, -1, 111, 112, 113,
5859 114, 115, 116, 117, 118, 119, -1, -1, 0, 1,
5860 -1, 3, 4, 5, 6, 7, 8, 9, 10, 11,
5861 12, -1, 14, 15, 16, 17, 18, 19, 20, 21,
5862 22, 23, 24, 25, 148, 149, 150, -1, 30, 31,
5863 32, 33, 34, 35, 36, -1, 160, 39, 162, -1,
5864 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5865 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5866 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
5867 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
5868 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
5869 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
5870 102, 103, -1, 105, 106, -1, 108, -1, -1, 111,
5871 112, 113, 114, 115, 116, 117, 118, 119, -1, 121,
5872 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5873 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5874 -1, -1, -1, -1, -1, -1, 148, 149, 150, -1,
5875 -1, 153, -1, -1, -1, -1, 158, -1, 160, 0,
5876 1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
5877 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
5878 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5879 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5880 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
5881 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5882 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5883 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
5884 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5885 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
5886 -1, 102, 103, -1, 105, 106, -1, 108, -1, -1,
5887 111, 112, 113, 114, 115, 116, 117, 118, 119, -1,
5888 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5889 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5890 -1, -1, -1, -1, -1, -1, -1, 148, 149, 150,
5891 -1, -1, 153, 3, 4, 5, -1, 7, -1, 160,
5892 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
5893 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
5894 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
5895 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
5896 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
5897 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
5898 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
5899 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5900 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
5901 -1, -1, 102, 103, -1, 105, 106, -1, 108, 109,
5902 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
5903 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5904 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
5905 19, 20, 21, 22, 23, 24, -1, -1, 148, 149,
5906 150, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5907 39, -1, 162, -1, -1, -1, -1, 46, -1, -1,
5908 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5909 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5910 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
5911 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5912 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
5913 99, -1, -1, 102, 103, -1, 105, 106, -1, -1,
5914 -1, -1, 111, 112, 113, 114, 115, 116, 117, 118,
5915 119, -1, -1, -1, -1, 3, 4, 5, 6, 7,
5916 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
5917 18, 19, 20, 21, 22, 23, 24, 25, 26, 148,
5918 149, 150, 30, 31, 32, 33, 34, 35, 36, 37,
5919 38, 39, -1, 162, -1, -1, -1, 45, 46, 47,
5920 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5921 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5922 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5923 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
5924 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
5925 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5926 108, 109, -1, -1, -1, -1, -1, -1, -1, -1,
5927 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5928 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5929 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5930 -1, 149, 150, -1, -1, -1, -1, -1, 156, 157,
5931 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
5932 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
5933 23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
5934 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
5935 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
5936 53, 54, 55, 56, 57, -1, -1, -1, -1, -1,
5937 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5938 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
5939 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
5940 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
5941 -1, -1, -1, -1, -1, 108, 109, -1, -1, -1,
5942 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5943 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5944 -1, -1, -1, -1, -1, 138, 139, 140, 141, 142,
5945 143, 144, 145, 146, 147, -1, 149, 150, -1, -1,
5946 -1, -1, -1, 156, 3, 4, 5, 6, 7, 8,
5947 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
5948 19, 20, 21, 22, 23, 24, 25, 26, -1, -1,
5949 -1, 30, 31, 32, 33, 34, 35, 36, 37, 38,
5950 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
5951 49, 50, 51, 52, 53, 54, -1, 56, -1, -1,
5952 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5953 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
5954 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
5955 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
5956 -1, -1, -1, -1, -1, -1, -1, -1, -1, 108,
5957 109, -1, -1, 112, -1, -1, -1, -1, -1, -1,
5958 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5959 -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
5960 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
5961 149, 150, -1, -1, -1, -1, -1, 156, 3, 4,
5962 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
5963 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
5964 25, 26, -1, -1, -1, 30, 31, 32, 33, 34,
5965 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
5966 45, 46, 47, 48, 49, 50, 51, 52, 53, -1,
5967 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
5968 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5969 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
5970 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
5971 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
5972 -1, -1, -1, 108, 109, -1, -1, 112, -1, -1,
5973 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5974 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5975 -1, -1, -1, 138, 139, 140, 141, 142, 143, 144,
5976 145, 146, 147, -1, 149, 150, -1, -1, -1, -1,
5977 -1, 156, 3, 4, 5, 6, 7, 8, 9, 10,
5978 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
5979 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
5980 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
5981 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
5982 51, 52, 53, -1, -1, 56, -1, -1, -1, -1,
5983 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5984 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
5985 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
5986 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
5987 -1, -1, -1, -1, -1, -1, -1, 108, 109, -1,
5988 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5989 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5990 -1, -1, -1, -1, -1, -1, -1, 138, 139, 140,
5991 141, 142, 143, 144, 145, 146, 147, -1, 149, 150,
5992 3, 4, 5, -1, 7, 156, -1, -1, 11, 12,
5993 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
5994 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5995 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5996 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5997 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5998 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5999 -1, -1, -1, -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, 99, -1, -1, 102,
6002 103, -1, 105, 106, -1, -1, -1, -1, 111, 112,
6003 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
6004 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6005 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
6006 5, -1, 7, -1, -1, 148, 11, 12, -1, -1,
6007 -1, 16, 155, 18, 19, 20, 21, 22, 23, 24,
6008 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
6009 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6010 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
6011 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6012 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6013 -1, -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, 99, -1, -1, 102, 103, -1,
6016 105, 106, -1, -1, -1, -1, 111, 112, 113, 114,
6017 115, 116, 117, 118, 119, -1, -1, -1, -1, -1,
6018 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6019 -1, -1, -1, -1, 1, -1, 3, 4, 5, 6,
6020 7, -1, -1, 148, 11, 12, -1, -1, -1, 16,
6021 155, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6022 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6023 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
6024 -1, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6025 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6026 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6027 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6028 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6029 -1, -1, 99, -1, -1, 102, 103, -1, 105, 106,
6030 -1, 108, -1, -1, 111, 112, 113, 114, 115, 116,
6031 117, 118, 119, -1, -1, 1, -1, 3, 4, 5,
6032 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6033 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6034 -1, 148, 149, 150, 30, 31, 32, 33, 34, 35,
6035 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
6036 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
6037 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6038 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6039 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6040 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6041 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
6042 106, -1, -1, -1, -1, 111, 112, 113, 114, 115,
6043 116, 117, 118, 119, -1, -1, -1, -1, 3, 4,
6044 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
6045 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6046 -1, -1, 148, 149, 150, 30, 31, 32, 33, 34,
6047 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6048 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
6049 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
6050 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6051 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6052 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6053 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
6054 105, 106, -1, 108, 109, 110, 111, 112, 113, 114,
6055 115, 116, 117, 118, 119, -1, -1, -1, -1, 3,
6056 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
6057 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6058 24, -1, -1, 148, 149, 150, 30, 31, 32, 33,
6059 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6060 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6061 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
6062 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6063 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6064 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6065 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6066 -1, 105, 106, -1, 108, 109, 110, 111, 112, 113,
6067 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
6068 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
6069 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
6070 23, 24, -1, -1, 148, 149, 150, 30, 31, 32,
6071 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6072 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
6073 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
6074 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
6075 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
6076 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
6077 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6078 103, -1, 105, 106, -1, 108, 109, 110, 111, 112,
6079 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
6080 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
6081 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6082 22, 23, 24, -1, -1, 148, 149, 150, 30, 31,
6083 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6084 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6085 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
6086 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6087 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6088 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6089 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6090 102, 103, -1, 105, 106, -1, 108, 109, 110, 111,
6091 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
6092 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6093 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6094 21, 22, 23, 24, -1, -1, 148, 149, 150, 30,
6095 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6096 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6097 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
6098 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6099 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6100 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6101 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6102 -1, 102, 103, -1, 105, 106, -1, 108, 109, -1,
6103 111, 112, 113, 114, 115, 116, 117, 118, 119, -1,
6104 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
6105 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
6106 20, 21, 22, 23, 24, -1, -1, 148, 149, 150,
6107 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6108 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
6109 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
6110 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
6111 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
6112 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6113 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6114 -1, -1, 102, 103, -1, 105, 106, -1, -1, 109,
6115 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
6116 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
6117 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
6118 19, 20, 21, 22, 23, 24, -1, -1, 148, 149,
6119 150, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6120 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
6121 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
6122 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6123 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6124 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6125 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6126 99, -1, -1, 102, 103, -1, 105, 106, -1, -1,
6127 109, -1, 111, 112, 113, 114, 115, 116, 117, 118,
6128 119, -1, -1, -1, -1, 3, 4, 5, -1, 7,
6129 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
6130 18, 19, 20, 21, 22, 23, 24, -1, -1, 148,
6131 149, 150, 30, 31, 32, 33, 34, 35, 36, -1,
6132 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
6133 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6134 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6135 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6136 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6137 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6138 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
6139 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
6140 118, 119, -1, -1, -1, -1, 3, 4, 5, -1,
6141 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
6142 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6143 148, 149, 150, 30, 31, 32, 33, 34, 35, 36,
6144 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
6145 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
6146 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6147 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6148 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6149 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6150 -1, -1, 99, -1, -1, 102, 103, -1, 105, 106,
6151 -1, 108, -1, -1, 111, 112, 113, 114, 115, 116,
6152 117, 118, 119, -1, -1, -1, -1, 3, 4, 5,
6153 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6154 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6155 -1, 148, 149, 150, 30, 31, 32, 33, 34, 35,
6156 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
6157 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
6158 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6159 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6160 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6161 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6162 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
6163 106, -1, 108, -1, -1, 111, 112, 113, 114, 115,
6164 116, 117, 118, 119, -1, -1, -1, -1, 3, 4,
6165 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
6166 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6167 -1, -1, 148, 149, 150, 30, 31, 32, 33, 34,
6168 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6169 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
6170 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6171 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6172 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6173 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6174 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
6175 105, 106, -1, 108, -1, -1, 111, 112, 113, 114,
6176 115, 116, 117, 118, 119, -1, -1, -1, -1, 3,
6177 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
6178 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6179 24, -1, -1, 148, 149, 150, 30, 31, 32, 33,
6180 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6181 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6182 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6183 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6184 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6185 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6186 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6187 -1, 105, 106, -1, 108, -1, -1, 111, 112, 113,
6188 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
6189 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
6190 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
6191 23, 24, -1, -1, 148, 149, 150, 30, 31, 32,
6192 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6193 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
6194 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
6195 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
6196 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
6197 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
6198 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6199 103, -1, 105, 106, -1, -1, -1, -1, 111, 112,
6200 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
6201 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
6202 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6203 22, 23, 24, -1, -1, 148, 149, 150, 30, 31,
6204 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6205 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6206 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6207 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6208 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6209 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6210 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6211 102, 103, -1, 105, 106, -1, -1, -1, -1, 111,
6212 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
6213 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6214 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6215 21, 22, 23, 24, -1, -1, 148, 149, 150, 30,
6216 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6217 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6218 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
6219 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6220 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6221 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6222 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6223 -1, 102, 103, -1, 105, 106, -1, -1, -1, -1,
6224 111, 112, 113, 114, 115, 116, 117, 118, 119, -1,
6225 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
6226 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
6227 20, 21, 22, 23, 24, -1, -1, 148, 149, 150,
6228 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6229 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
6230 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6231 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
6232 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
6233 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6234 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6235 -1, -1, 102, 103, -1, 105, 106, -1, -1, -1,
6236 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
6237 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
6238 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
6239 19, 20, 21, 22, 23, 24, -1, -1, 148, 149,
6240 150, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6241 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
6242 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6243 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6244 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6245 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6246 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6247 99, -1, -1, 102, 103, -1, 105, 106, -1, -1,
6248 -1, -1, 111, 112, 113, 114, 115, 116, 117, 118,
6249 119, -1, -1, -1, -1, 3, 4, 5, -1, 7,
6250 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
6251 18, 19, 20, 21, 22, 23, 24, -1, -1, 148,
6252 149, 150, 30, 31, 32, 33, 34, 35, 36, -1,
6253 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
6254 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6255 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6256 -1, -1, -1, -1, -1, -1, -1, -1, -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, 99, -1, -1, 102, 103, -1, 105, 106, -1,
6260 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
6261 118, 119, -1, -1, 3, 4, 5, -1, 7, -1,
6262 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
6263 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6264 148, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6265 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
6266 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6267 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6268 -1, -1, -1, -1, -1, -1, -1, -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 99, -1, -1, 102, 103, -1, 105, 106, -1, 108,
6272 -1, -1, 111, 112, 113, 114, 115, 116, 117, 118,
6273 119, -1, -1, 3, 4, 5, -1, 7, -1, -1,
6274 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
6275 20, 21, 22, 23, 24, -1, -1, -1, -1, 148,
6276 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6277 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
6278 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6279 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
6280 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6281 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6282 -1, -1, -1, -1, -1, 95, -1, -1, -1, 99,
6283 -1, -1, 102, 103, -1, 105, 106, -1, -1, -1,
6284 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
6285 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6286 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6287 21, 22, 23, 24, -1, -1, -1, -1, 148, 30,
6288 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6289 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6290 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
6291 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6292 -1, -1, -1, -1, -1, -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, 99, -1,
6295 -1, 102, 103, -1, 105, 106, -1, -1, -1, -1,
6296 111, 112, 113, 114, 115, 116, 117, 118, 119, -1,
6297 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
6298 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6299 22, 23, 24, -1, -1, -1, -1, 148, 30, 31,
6300 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6301 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6302 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6303 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6304 -1, -1, -1, -1, -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, 99, -1, -1,
6307 102, 103, -1, 105, 106, -1, -1, -1, -1, 111,
6308 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
6309 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
6310 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
6311 23, 24, -1, -1, -1, -1, 148, 30, 31, 32,
6312 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6313 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
6314 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
6315 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
6316 -1, -1, -1, -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, 99, -1, -1, 102,
6319 103, -1, 105, 106, -1, -1, -1, -1, 111, 112,
6320 113, 114, 115, 116, 117, 118, 119, -1, -1, 3,
6321 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
6322 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6323 24, -1, -1, -1, -1, 148, 30, 31, 32, 33,
6324 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6325 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6326 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6327 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6328 -1, -1, -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, 99, -1, -1, 102, 103,
6331 -1, 105, 106, 33, 34, 35, 36, 111, 112, 113,
6332 114, 115, 116, 117, 118, 119, -1, -1, -1, 49,
6333 50, 51, 52, -1, -1, -1, 56, -1, -1, 59,
6334 60, 61, 62, 63, -1, -1, -1, -1, -1, -1,
6335 -1, -1, -1, -1, 148, -1, -1, -1, -1, -1,
6336 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6337 -1, 91, 92, -1, -1, -1, 52, 53, -1, 99,
6338 56, -1, 102, -1, -1, 105, 106, -1, 108, -1,
6339 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
6340 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
6341 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
6342 96, 141, -1, -1, -1, -1, -1, -1, 148, -1,
6343 -1, -1, 108, 109, -1, -1, -1, -1, -1, -1,
6344 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6345 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6346 -1, -1, 138, 139, 140, 141, 142, 143, 144, 145,
6347 146, 147, -1, 149, 150, 52, 53, -1, -1, 56,
6348 156, 157, -1, -1, -1, -1, -1, -1, -1, -1,
6349 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6350 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
6351 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
6352 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6353 -1, 108, 109, -1, -1, -1, -1, -1, -1, -1,
6354 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6355 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6356 -1, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6357 147, -1, 149, 150, 52, 53, -1, -1, 56, 156,
6358 157, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6359 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6360 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
6361 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
6362 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6363 108, 109, -1, -1, -1, -1, -1, -1, -1, -1,
6364 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6365 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6366 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
6367 -1, 149, 150, 52, 53, -1, -1, 56, 156, 157,
6368 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6369 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
6370 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
6371 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
6372 -1, -1, -1, -1, -1, -1, -1, -1, -1, 108,
6373 109, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6374 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6375 -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
6376 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
6377 149, 150, 52, 53, -1, -1, 56, 156, 157, -1,
6378 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6379 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
6380 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
6381 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
6382 -1, -1, -1, -1, -1, -1, -1, -1, 108, 109,
6383 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6384 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6385 -1, -1, -1, -1, -1, -1, -1, -1, 138, 139,
6386 140, 141, 142, 143, 144, 145, 146, 147, -1, 149,
6387 150, 52, 53, -1, -1, 56, 156, 157, -1, -1,
6388 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6389 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
6390 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
6391 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
6392 -1, -1, -1, -1, -1, -1, -1, 108, 109, -1,
6393 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6394 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6395 -1, -1, -1, -1, -1, -1, -1, 138, 139, 140,
6396 141, 142, 143, 144, 145, 146, 147, -1, 149, 150,
6397 52, 53, -1, -1, 56, 156, 157, -1, -1, -1,
6398 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6399 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
6400 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
6401 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
6402 -1, -1, -1, -1, -1, -1, 108, 109, -1, -1,
6403 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6404 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6405 -1, -1, -1, -1, -1, -1, 138, 139, 140, 141,
6406 142, 143, 144, 145, 146, 147, -1, 149, 150, 52,
6407 53, -1, -1, 56, 156, 157, -1, -1, -1, -1,
6408 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6409 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
6410 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
6411 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
6412 -1, -1, -1, -1, -1, 108, 109, -1, -1, -1,
6413 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6414 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6415 -1, -1, -1, -1, -1, 138, 139, 140, 141, 142,
6416 143, 144, 145, 146, 147, -1, 149, 150, 52, 53,
6417 -1, -1, 56, 156, 157, -1, -1, -1, -1, -1,
6418 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6419 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
6420 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
6421 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
6422 -1, -1, -1, -1, 108, 109, -1, -1, -1, -1,
6423 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6424 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6425 -1, -1, -1, -1, 138, 139, 140, 141, 142, 143,
6426 144, 145, 146, 147, -1, 149, 150, 52, 53, -1,
6427 -1, 56, 156, 157, -1, -1, -1, -1, -1, -1,
6428 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6429 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
6430 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
6431 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
6432 -1, -1, -1, 108, 109, -1, -1, -1, -1, -1,
6433 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6434 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6435 -1, -1, -1, 138, 139, 140, 141, 142, 143, 144,
6436 145, 146, 147, -1, 149, 150, 52, 53, -1, -1,
6437 56, 156, 157, -1, -1, -1, -1, -1, -1, -1,
6438 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6439 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
6440 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
6441 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6442 -1, -1, 108, 109, -1, -1, -1, -1, -1, -1,
6443 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6444 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6445 -1, -1, 138, 139, 140, 141, 142, 143, 144, 145,
6446 146, 147, -1, 149, 150, 52, 53, -1, -1, 56,
6447 156, 157, -1, -1, -1, -1, -1, -1, -1, -1,
6448 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6449 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
6450 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
6451 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6452 -1, 108, 109, -1, -1, -1, -1, -1, -1, -1,
6453 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6454 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6455 -1, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6456 147, -1, 149, 150, 52, 53, -1, -1, 56, 156,
6457 157, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6458 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6459 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
6460 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
6461 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6462 108, 109, -1, -1, -1, -1, -1, -1, -1, -1,
6463 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6464 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6465 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
6466 -1, 149, 150, 52, 53, -1, -1, 56, 156, 157,
6467 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6468 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
6469 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
6470 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
6471 -1, -1, -1, -1, -1, -1, -1, -1, -1, 108,
6472 109, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6473 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6474 -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
6475 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
6476 149, 150, 52, 53, -1, -1, 56, 156, 157, -1,
6477 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6478 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
6479 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
6480 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
6481 -1, -1, -1, -1, -1, -1, -1, -1, 108, 109,
6482 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6483 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6484 -1, -1, -1, -1, -1, -1, -1, -1, 138, 139,
6485 140, 141, 142, 143, 144, 145, 146, 147, -1, 149,
6486 150, -1, -1, -1, -1, -1, 156
6491static const yytype_int16 yystos[] =
6493 0, 164, 165, 0, 1, 3, 4, 5, 6, 7,
6494 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
6495 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
6496 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6497 57, 59, 60, 61, 62, 63, 64, 65, 76, 77,
6498 91, 92, 99, 102, 103, 105, 106, 108, 111, 112,
6499 113, 114, 115, 116, 117, 118, 119, 148, 149, 150,
6500 166, 167, 168, 180, 181, 183, 186, 190, 191, 197,
6501 198, 200, 201, 202, 204, 205, 206, 208, 209, 218,
6502 221, 240, 250, 251, 252, 253, 254, 255, 256, 257,
6503 258, 259, 260, 269, 270, 294, 301, 302, 350, 351,
6504 352, 353, 354, 355, 357, 360, 362, 363, 376, 377,
6505 379, 380, 381, 382, 383, 384, 385, 386, 387, 425,
6506 439, 3, 4, 5, 6, 7, 8, 9, 10, 11,
6507 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
6508 22, 23, 24, 25, 26, 30, 31, 32, 33, 34,
6509 35, 36, 37, 38, 39, 45, 46, 47, 48, 49,
6510 50, 51, 52, 53, 56, 76, 77, 78, 79, 80,
6511 81, 82, 83, 84, 87, 88, 93, 94, 95, 96,
6512 108, 109, 138, 139, 140, 141, 142, 143, 144, 145,
6513 146, 147, 149, 150, 156, 212, 213, 214, 216, 217,
6514 376, 179, 179, 179, 39, 58, 99, 102, 108, 109,
6515 110, 113, 149, 190, 191, 201, 209, 218, 225, 231,
6516 234, 236, 237, 250, 383, 384, 386, 387, 423, 424,
6517 231, 157, 228, 232, 233, 157, 162, 432, 54, 213,
6518 432, 152, 169, 170, 222, 439, 21, 22, 32, 200,
6519 218, 250, 269, 270, 218, 218, 218, 56, 47, 102,
6520 175, 176, 177, 181, 203, 204, 439, 175, 226, 236,
6521 423, 439, 225, 422, 423, 439, 46, 99, 148, 155,
6522 190, 191, 208, 240, 250, 383, 384, 387, 295, 212,
6523 366, 378, 382, 366, 367, 368, 161, 356, 356, 356,
6524 356, 381, 197, 218, 218, 160, 162, 431, 437, 438,
6525 179, 40, 41, 42, 43, 44, 37, 38, 157, 390,
6526 391, 392, 393, 439, 390, 392, 26, 152, 228, 232,
6527 261, 303, 28, 262, 300, 135, 155, 102, 108, 205,
6528 135, 25, 78, 79, 80, 81, 82, 83, 84, 85,
6529 86, 87, 88, 89, 90, 95, 96, 101, 136, 138,
6530 139, 140, 141, 142, 143, 144, 145, 146, 147, 220,
6531 220, 69, 97, 98, 154, 429, 241, 1, 186, 193,
6532 193, 194, 195, 194, 193, 431, 438, 99, 202, 209,
6533 250, 275, 383, 384, 387, 52, 56, 95, 99, 210,
6534 211, 250, 383, 384, 387, 211, 33, 34, 35, 36,
6535 49, 50, 51, 52, 56, 157, 189, 212, 385, 420,
6536 231, 157, 232, 98, 429, 430, 303, 353, 100, 100,
6537 155, 225, 56, 225, 225, 225, 366, 390, 390, 135,
6538 101, 155, 235, 439, 98, 154, 429, 100, 100, 155,
6539 235, 92, 230, 231, 236, 397, 423, 439, 231, 186,
6540 432, 433, 186, 54, 64, 65, 182, 157, 222, 223,
6541 166, 98, 429, 100, 178, 203, 158, 431, 438, 433,
6542 242, 159, 155, 432, 436, 155, 436, 153, 436, 432,
6543 56, 381, 205, 207, 391, 155, 98, 154, 429, 292,
6544 66, 120, 122, 123, 369, 120, 120, 369, 67, 369,
6545 161, 358, 364, 361, 365, 78, 160, 168, 152, 193,
6546 193, 193, 193, 222, 224, 186, 186, 52, 54, 55,
6547 56, 57, 58, 78, 92, 102, 108, 109, 110, 142,
6548 145, 280, 338, 394, 396, 397, 398, 399, 400, 401,
6549 402, 403, 404, 407, 408, 409, 410, 411, 414, 415,
6550 416, 417, 418, 135, 248, 396, 135, 249, 304, 305,
6551 107, 199, 306, 307, 306, 222, 203, 155, 208, 155,
6552 222, 188, 218, 218, 218, 218, 218, 218, 218, 218,
6553 218, 218, 218, 218, 218, 187, 218, 218, 218, 218,
6554 218, 218, 218, 218, 218, 218, 218, 52, 53, 56,
6555 216, 228, 425, 426, 427, 230, 236, 52, 53, 56,
6556 216, 228, 426, 171, 175, 13, 271, 437, 271, 175,
6557 193, 175, 431, 244, 56, 98, 154, 429, 25, 193,
6558 52, 56, 210, 139, 388, 98, 154, 429, 247, 421,
6559 69, 98, 428, 231, 433, 52, 56, 426, 222, 222,
6560 215, 125, 135, 135, 222, 225, 225, 234, 237, 423,
6561 52, 56, 230, 52, 56, 222, 222, 424, 433, 155,
6562 433, 155, 433, 158, 213, 223, 218, 153, 56, 426,
6563 426, 222, 170, 433, 177, 158, 423, 155, 207, 52,
6564 56, 230, 52, 56, 293, 371, 370, 120, 359, 369,
6565 66, 120, 120, 359, 66, 120, 218, 175, 181, 102,
6566 108, 276, 277, 278, 279, 399, 155, 419, 439, 433,
6567 281, 282, 155, 395, 225, 155, 419, 34, 52, 155,
6568 395, 52, 155, 395, 52, 39, 184, 201, 218, 219,
6569 171, 437, 184, 219, 171, 153, 292, 304, 10, 68,
6570 268, 292, 268, 108, 197, 225, 236, 238, 239, 433,
6571 207, 155, 183, 185, 197, 209, 218, 225, 227, 239,
6572 250, 387, 313, 313, 432, 100, 100, 152, 228, 232,
6573 432, 434, 155, 100, 100, 228, 229, 232, 439, 268,
6574 222, 175, 13, 175, 268, 27, 272, 437, 268, 25,
6575 243, 314, 17, 265, 309, 52, 56, 230, 52, 56,
6576 194, 246, 389, 245, 52, 56, 210, 230, 171, 186,
6577 192, 433, 229, 232, 185, 218, 227, 185, 227, 213,
6578 225, 39, 235, 100, 100, 434, 100, 100, 397, 423,
6579 186, 227, 436, 205, 434, 179, 372, 375, 382, 387,
6580 356, 369, 356, 356, 356, 153, 278, 399, 155, 433,
6581 155, 418, 225, 135, 394, 401, 414, 416, 404, 408,
6582 410, 402, 411, 416, 400, 402, 432, 44, 44, 268,
6583 268, 293, 153, 293, 225, 155, 44, 207, 44, 135,
6584 44, 98, 154, 429, 311, 311, 137, 222, 222, 304,
6585 199, 159, 100, 222, 222, 199, 8, 263, 346, 439,
6586 14, 15, 266, 267, 273, 274, 439, 274, 196, 313,
6587 309, 268, 108, 225, 308, 268, 434, 175, 437, 193,
6588 171, 434, 268, 433, 189, 303, 300, 432, 222, 222,
6589 100, 222, 222, 433, 155, 433, 157, 297, 396, 373,
6590 433, 276, 279, 277, 155, 395, 155, 395, 419, 155,
6591 395, 155, 395, 395, 184, 219, 224, 224, 179, 179,
6592 108, 225, 224, 224, 222, 224, 52, 56, 230, 52,
6593 56, 312, 312, 218, 185, 227, 185, 227, 153, 222,
6594 185, 227, 185, 227, 225, 239, 347, 439, 174, 266,
6595 175, 193, 268, 268, 311, 268, 225, 155, 271, 268,
6596 171, 437, 268, 222, 396, 296, 175, 155, 155, 402,
6597 416, 402, 402, 218, 218, 140, 287, 288, 439, 287,
6598 225, 181, 181, 218, 434, 52, 56, 58, 91, 92,
6599 99, 102, 105, 106, 108, 113, 141, 294, 318, 319,
6600 320, 321, 324, 328, 329, 330, 333, 334, 335, 336,
6601 337, 338, 339, 340, 341, 342, 343, 344, 345, 350,
6602 351, 354, 355, 357, 360, 362, 363, 384, 408, 318,
6603 185, 227, 101, 348, 439, 9, 264, 349, 439, 172,
6604 271, 312, 108, 225, 175, 268, 289, 432, 29, 124,
6605 298, 0, 121, 374, 277, 395, 155, 395, 395, 395,
6606 280, 283, 286, 289, 400, 402, 403, 405, 406, 412,
6607 413, 416, 418, 175, 171, 341, 341, 56, 210, 312,
6608 319, 326, 327, 328, 329, 332, 434, 312, 432, 435,
6609 52, 366, 52, 102, 382, 101, 155, 140, 155, 155,
6610 319, 89, 90, 98, 154, 157, 322, 323, 52, 99,
6611 209, 250, 383, 384, 387, 271, 175, 175, 175, 317,
6612 318, 225, 274, 309, 310, 158, 160, 299, 175, 402,
6613 419, 289, 140, 281, 155, 284, 285, 99, 250, 155,
6614 419, 155, 284, 155, 284, 319, 434, 319, 330, 332,
6615 434, 155, 222, 153, 125, 193, 342, 326, 330, 324,
6616 331, 332, 113, 335, 339, 341, 341, 210, 312, 434,
6617 312, 433, 326, 329, 333, 326, 329, 333, 56, 98,
6618 154, 429, 175, 173, 273, 271, 40, 41, 52, 290,
6619 291, 398, 171, 153, 395, 140, 250, 283, 413, 416,
6620 56, 98, 405, 410, 402, 412, 416, 402, 433, 155,
6621 155, 325, 433, 155, 155, 366, 433, 433, 433, 434,
6622 434, 434, 52, 56, 230, 52, 56, 346, 349, 315,
6623 193, 193, 155, 432, 268, 155, 284, 155, 284, 52,
6624 56, 419, 155, 284, 155, 284, 284, 331, 333, 331,
6625 330, 332, 434, 175, 291, 402, 416, 402, 402, 155,
6626 435, 274, 314, 316, 284, 155, 284, 284, 284, 402,
6631static const yytype_int16 yyr1[] =
6633 0, 163, 165, 164, 166, 167, 167, 167, 168, 168,
6634 169, 170, 172, 173, 171, 174, 171, 175, 176, 176,
6635 176, 177, 178, 177, 179, 180, 182, 181, 181, 181,
6636 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
6637 181, 181, 181, 181, 181, 183, 183, 183, 183, 183,
6638 183, 183, 183, 183, 183, 184, 184, 184, 185, 185,
6639 185, 186, 186, 186, 186, 186, 187, 186, 188, 186,
6640 186, 189, 190, 192, 191, 193, 193, 195, 196, 194,
6641 197, 197, 198, 198, 199, 200, 201, 201, 201, 201,
6642 201, 201, 201, 201, 201, 201, 201, 201, 202, 202,
6643 203, 203, 204, 204, 204, 204, 204, 204, 204, 204,
6644 204, 204, 205, 205, 206, 206, 207, 207, 208, 208,
6645 208, 208, 208, 208, 208, 208, 208, 209, 209, 209,
6646 209, 209, 209, 209, 209, 209, 210, 210, 211, 211,
6647 211, 212, 212, 212, 212, 212, 213, 213, 214, 215,
6648 214, 216, 216, 216, 216, 216, 216, 216, 216, 216,
6649 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
6650 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
6651 216, 217, 217, 217, 217, 217, 217, 217, 217, 217,
6652 217, 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, 218, 218, 218, 218, 218, 218, 218, 218,
6656 218, 218, 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, 219, 219, 219,
6660 220, 220, 220, 220, 221, 221, 222, 223, 224, 225,
6661 226, 226, 226, 226, 227, 227, 228, 228, 228, 229,
6662 229, 230, 230, 230, 230, 230, 231, 231, 231, 231,
6663 231, 233, 232, 234, 234, 235, 235, 236, 236, 236,
6664 236, 237, 237, 238, 238, 239, 239, 239, 240, 240,
6665 240, 240, 240, 240, 240, 240, 240, 240, 240, 241,
6666 240, 242, 240, 240, 240, 240, 240, 240, 240, 240,
6667 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
6668 240, 240, 240, 243, 240, 244, 240, 240, 240, 245,
6669 240, 246, 240, 247, 240, 248, 240, 249, 240, 240,
6670 240, 240, 240, 250, 251, 252, 253, 254, 255, 256,
6671 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
6672 267, 268, 268, 269, 270, 271, 271, 271, 272, 272,
6673 273, 273, 274, 274, 275, 275, 276, 276, 277, 277,
6674 278, 278, 278, 278, 278, 279, 279, 280, 280, 282,
6675 281, 283, 283, 283, 283, 284, 284, 285, 286, 286,
6676 286, 286, 286, 286, 286, 286, 286, 286, 286, 286,
6677 286, 286, 286, 287, 287, 288, 288, 289, 289, 290,
6678 290, 291, 291, 292, 293, 295, 296, 294, 297, 297,
6679 298, 299, 298, 300, 301, 301, 301, 301, 302, 302,
6680 302, 302, 302, 302, 302, 302, 302, 303, 303, 305,
6681 304, 307, 306, 308, 308, 308, 308, 309, 310, 310,
6682 311, 312, 313, 315, 314, 316, 316, 317, 317, 317,
6683 318, 318, 318, 318, 318, 318, 319, 320, 320, 321,
6684 321, 322, 323, 324, 324, 324, 324, 324, 324, 324,
6685 324, 324, 324, 324, 324, 324, 325, 324, 324, 324,
6686 326, 326, 326, 326, 326, 326, 327, 327, 328, 328,
6687 329, 330, 330, 331, 331, 332, 333, 333, 333, 333,
6688 334, 334, 335, 335, 336, 336, 337, 337, 338, 339,
6689 339, 340, 340, 340, 340, 340, 340, 340, 340, 340,
6690 340, 341, 341, 341, 341, 341, 341, 341, 341, 341,
6691 341, 342, 343, 343, 344, 345, 345, 345, 346, 346,
6692 347, 347, 347, 348, 348, 349, 349, 350, 350, 351,
6693 352, 352, 352, 353, 354, 355, 356, 356, 357, 358,
6694 358, 359, 359, 360, 361, 361, 362, 363, 364, 364,
6695 365, 365, 366, 366, 367, 367, 368, 368, 369, 370,
6696 369, 371, 372, 373, 369, 374, 374, 375, 375, 376,
6697 376, 377, 378, 378, 379, 380, 380, 381, 381, 381,
6698 381, 382, 382, 382, 383, 383, 383, 384, 384, 384,
6699 384, 384, 384, 384, 385, 385, 386, 386, 387, 387,
6700 389, 388, 388, 390, 390, 391, 392, 393, 392, 394,
6701 394, 394, 394, 394, 395, 395, 396, 396, 396, 396,
6702 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
6703 396, 397, 398, 398, 398, 398, 399, 399, 400, 401,
6704 401, 402, 402, 403, 404, 404, 405, 405, 406, 406,
6705 407, 407, 408, 408, 409, 410, 410, 411, 412, 413,
6706 413, 414, 414, 415, 415, 416, 416, 417, 417, 418,
6707 418, 419, 419, 420, 421, 420, 422, 422, 423, 423,
6708 424, 424, 424, 424, 424, 424, 425, 425, 425, 426,
6709 426, 427, 427, 427, 428, 428, 429, 429, 430, 430,
6710 431, 431, 432, 432, 433, 434, 435, 436, 436, 437,
6715static const yytype_int8 yyr2[] =
6717 0, 2, 0, 2, 2, 1, 1, 3, 1, 2,
6718 1, 3, 0, 0, 8, 0, 5, 2, 1, 1,
6719 3, 1, 0, 3, 0, 2, 0, 4, 3, 3,
6720 3, 2, 3, 3, 3, 3, 4, 5, 1, 4,
6721 4, 7, 4, 1, 1, 4, 4, 7, 6, 6,
6722 6, 6, 4, 4, 4, 1, 4, 3, 1, 4,
6723 1, 1, 3, 3, 3, 2, 0, 7, 0, 7,
6724 1, 1, 2, 0, 5, 1, 1, 0, 0, 4,
6725 1, 1, 1, 4, 3, 1, 2, 3, 4, 5,
6726 4, 5, 6, 2, 2, 2, 2, 2, 1, 3,
6727 1, 3, 1, 2, 3, 5, 2, 4, 2, 4,
6728 1, 3, 1, 3, 2, 3, 1, 3, 1, 1,
6729 4, 3, 3, 3, 3, 2, 1, 1, 1, 4,
6730 3, 3, 3, 3, 2, 1, 1, 1, 2, 1,
6731 3, 1, 1, 1, 1, 1, 1, 1, 1, 0,
6732 4, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6733 1, 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, 4, 4, 7, 6, 6, 6, 6, 5,
6740 4, 3, 3, 2, 2, 2, 2, 3, 3, 3,
6741 3, 3, 3, 4, 2, 2, 3, 3, 3, 3,
6742 1, 3, 3, 3, 3, 3, 2, 2, 3, 3,
6743 3, 3, 4, 6, 4, 4, 1, 1, 4, 3,
6744 1, 1, 1, 1, 3, 3, 1, 1, 1, 1,
6745 1, 2, 4, 2, 1, 4, 3, 5, 3, 1,
6746 1, 1, 1, 2, 4, 2, 1, 2, 2, 4,
6747 1, 0, 2, 2, 1, 2, 1, 1, 1, 3,
6748 3, 2, 1, 1, 1, 3, 4, 2, 1, 1,
6749 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
6750 4, 0, 4, 3, 3, 2, 3, 3, 1, 4,
6751 3, 1, 6, 4, 3, 2, 1, 2, 1, 6,
6752 6, 4, 4, 0, 6, 0, 5, 5, 6, 0,
6753 6, 0, 7, 0, 5, 0, 5, 0, 5, 1,
6754 1, 1, 1, 1, 1, 1, 1, 2, 2, 1,
6755 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6756 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,
6757 1, 5, 1, 2, 1, 1, 1, 3, 1, 3,
6758 1, 3, 5, 1, 3, 2, 1, 1, 1, 0,
6759 2, 4, 2, 2, 1, 2, 0, 1, 6, 8,
6760 4, 6, 4, 2, 6, 2, 4, 6, 2, 4,
6761 2, 4, 1, 1, 1, 3, 4, 1, 4, 1,
6762 3, 1, 1, 0, 0, 0, 0, 8, 4, 1,
6763 3, 0, 4, 3, 2, 4, 5, 5, 2, 4,
6764 4, 3, 3, 3, 2, 1, 4, 3, 3, 0,
6765 6, 0, 6, 1, 2, 3, 4, 5, 1, 1,
6766 0, 0, 0, 0, 9, 1, 1, 1, 3, 3,
6767 1, 2, 3, 1, 1, 1, 1, 3, 1, 3,
6768 1, 2, 2, 1, 1, 4, 4, 4, 3, 4,
6769 4, 4, 3, 3, 3, 2, 0, 6, 2, 4,
6770 1, 1, 2, 2, 4, 1, 2, 3, 1, 3,
6771 5, 2, 1, 1, 3, 1, 3, 1, 2, 1,
6772 1, 3, 2, 1, 1, 3, 2, 1, 2, 1,
6773 1, 1, 3, 3, 2, 2, 1, 1, 1, 2,
6774 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6775 1, 1, 2, 2, 4, 2, 3, 1, 6, 1,
6776 1, 1, 1, 2, 1, 2, 1, 1, 1, 1,
6777 1, 1, 2, 3, 3, 3, 1, 2, 4, 0,
6778 3, 1, 2, 4, 0, 3, 4, 4, 0, 3,
6779 0, 3, 0, 2, 0, 2, 0, 2, 1, 0,
6780 3, 0, 0, 0, 6, 1, 1, 1, 1, 1,
6781 1, 2, 1, 1, 3, 1, 2, 1, 1, 1,
6782 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6783 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6784 0, 4, 0, 1, 1, 3, 1, 0, 3, 4,
6785 2, 2, 1, 1, 2, 0, 6, 8, 4, 6,
6786 4, 6, 2, 4, 6, 2, 4, 2, 4, 1,
6787 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6788 3, 1, 3, 1, 2, 1, 2, 1, 1, 3,
6789 1, 3, 1, 1, 1, 2, 1, 3, 3, 1,
6790 3, 1, 3, 1, 1, 2, 1, 1, 1, 2,
6791 1, 2, 1, 1, 0, 4, 1, 2, 1, 3,
6792 3, 2, 1, 4, 2, 1, 1, 1, 1, 1,
6793 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6794 0, 1, 0, 1, 2, 2, 2, 1, 1, 1,
6799enum { YYENOMEM = -2 };
6801#define yyerrok (yyerrstatus = 0)
6802#define yyclearin (yychar = YYEMPTY)
6804#define YYACCEPT goto yyacceptlab
6805#define YYABORT goto yyabortlab
6806#define YYERROR goto yyerrorlab
6807#define YYNOMEM goto yyexhaustedlab
6810#define YYRECOVERING() (!!yyerrstatus)
6812#define YYBACKUP(Token, Value) \
6814 if (yychar == YYEMPTY) \
6818 YYPOPSTACK (yylen); \
6824 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
6831#define YYERRCODE YYUNDEF
6837#ifndef YYLLOC_DEFAULT
6838# define YYLLOC_DEFAULT(Current, Rhs, N) \
6842 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
6843 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
6844 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
6845 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
6849 (Current).first_line = (Current).last_line = \
6850 YYRHSLOC (Rhs, 0).last_line; \
6851 (Current).first_column = (Current).last_column = \
6852 YYRHSLOC (Rhs, 0).last_column; \
6857#define YYRHSLOC(Rhs, K) ((Rhs)[K])
6865# define YYFPRINTF fprintf
6868# define YYDPRINTF(Args) \
6879# ifndef YYLOCATION_PRINT
6881# if defined YY_LOCATION_PRINT
6885# define YYLOCATION_PRINT(File, Loc, p) YY_LOCATION_PRINT(File, *(Loc), p)
6887# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
6893yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
6896 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
6897 if (0 <= yylocp->first_line)
6899 res += YYFPRINTF (yyo,
"%d", yylocp->first_line);
6900 if (0 <= yylocp->first_column)
6901 res += YYFPRINTF (yyo,
".%d", yylocp->first_column);
6903 if (0 <= yylocp->last_line)
6905 if (yylocp->first_line < yylocp->last_line)
6907 res += YYFPRINTF (yyo,
"-%d", yylocp->last_line);
6909 res += YYFPRINTF (yyo,
".%d", end_col);
6911 else if (0 <= end_col && yylocp->first_column < end_col)
6912 res += YYFPRINTF (yyo,
"-%d", end_col);
6917# define YYLOCATION_PRINT yy_location_print_
6921# define YY_LOCATION_PRINT(File, Loc, p) YYLOCATION_PRINT(File, &(Loc), p)
6925# define YYLOCATION_PRINT(File, Loc, p) ((void) 0)
6928# define YY_LOCATION_PRINT YYLOCATION_PRINT
6934# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p) \
6938 YYFPRINTF (stderr, "%s ", Title); \
6939 yy_symbol_print (stderr, \
6940 Kind, Value, Location, p); \
6941 YYFPRINTF (stderr, "\n"); \
6951yy_symbol_value_print (
FILE *yyo,
6954 FILE *yyoutput = yyo;
6956 YY_USE (yylocationp);
6960 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6963 case YYSYMBOL_tIDENTIFIER:
6967 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6969 rb_parser_printf(p,
"%"PRIsVALUE, RNODE_RIPPER(((*yyvaluep).id))->nd_rval);
6979 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6981 rb_parser_printf(p,
"%"PRIsVALUE, RNODE_RIPPER(((*yyvaluep).id))->nd_rval);
6987 case YYSYMBOL_tGVAR:
6991 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6993 rb_parser_printf(p,
"%"PRIsVALUE, RNODE_RIPPER(((*yyvaluep).id))->nd_rval);
6999 case YYSYMBOL_tIVAR:
7003 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7005 rb_parser_printf(p,
"%"PRIsVALUE, RNODE_RIPPER(((*yyvaluep).id))->nd_rval);
7011 case YYSYMBOL_tCONSTANT:
7015 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7017 rb_parser_printf(p,
"%"PRIsVALUE, RNODE_RIPPER(((*yyvaluep).id))->nd_rval);
7023 case YYSYMBOL_tCVAR:
7027 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7029 rb_parser_printf(p,
"%"PRIsVALUE, RNODE_RIPPER(((*yyvaluep).id))->nd_rval);
7035 case YYSYMBOL_tLABEL:
7039 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7041 rb_parser_printf(p,
"%"PRIsVALUE, RNODE_RIPPER(((*yyvaluep).id))->nd_rval);
7047 case YYSYMBOL_tINTEGER:
7051 rb_parser_printf(p,
"%+"PRIsVALUE, RNODE_LIT(((*yyvaluep).node))->nd_lit);
7053 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
7059 case YYSYMBOL_tFLOAT:
7063 rb_parser_printf(p,
"%+"PRIsVALUE, RNODE_LIT(((*yyvaluep).node))->nd_lit);
7065 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
7071 case YYSYMBOL_tRATIONAL:
7075 rb_parser_printf(p,
"%+"PRIsVALUE, RNODE_LIT(((*yyvaluep).node))->nd_lit);
7077 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
7083 case YYSYMBOL_tIMAGINARY:
7087 rb_parser_printf(p,
"%+"PRIsVALUE, RNODE_LIT(((*yyvaluep).node))->nd_lit);
7089 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
7095 case YYSYMBOL_tCHAR:
7099 rb_parser_printf(p,
"%+"PRIsVALUE, RNODE_LIT(((*yyvaluep).node))->nd_lit);
7101 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
7107 case YYSYMBOL_tNTH_REF:
7111 rb_parser_printf(p,
"$%ld", RNODE_NTH_REF(((*yyvaluep).node))->nd_nth);
7113 rb_parser_printf(p,
"%"PRIsVALUE, ((*yyvaluep).node));
7119 case YYSYMBOL_tBACK_REF:
7123 rb_parser_printf(p,
"$%c", (
int)RNODE_BACK_REF(((*yyvaluep).node))->nd_nth);
7125 rb_parser_printf(p,
"%"PRIsVALUE, ((*yyvaluep).node));
7131 case YYSYMBOL_tSTRING_CONTENT:
7135 rb_parser_printf(p,
"%+"PRIsVALUE, RNODE_LIT(((*yyvaluep).node))->nd_lit);
7137 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
7143 case YYSYMBOL_tOP_ASGN:
7147 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7149 rb_parser_printf(p,
"%"PRIsVALUE, RNODE_RIPPER(((*yyvaluep).id))->nd_rval);
7155 case YYSYMBOL_top_compstmt:
7159 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7160 rb_parser_printf(p,
"NODE_SPECIAL");
7162 else if (((*yyvaluep).node)) {
7163 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7171 case YYSYMBOL_top_stmts:
7175 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7176 rb_parser_printf(p,
"NODE_SPECIAL");
7178 else if (((*yyvaluep).node)) {
7179 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7187 case YYSYMBOL_top_stmt:
7191 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7192 rb_parser_printf(p,
"NODE_SPECIAL");
7194 else if (((*yyvaluep).node)) {
7195 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7203 case YYSYMBOL_begin_block:
7207 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7208 rb_parser_printf(p,
"NODE_SPECIAL");
7210 else if (((*yyvaluep).node)) {
7211 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7219 case YYSYMBOL_bodystmt:
7223 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7224 rb_parser_printf(p,
"NODE_SPECIAL");
7226 else if (((*yyvaluep).node)) {
7227 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7235 case YYSYMBOL_compstmt:
7239 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7240 rb_parser_printf(p,
"NODE_SPECIAL");
7242 else if (((*yyvaluep).node)) {
7243 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7251 case YYSYMBOL_stmts:
7255 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7256 rb_parser_printf(p,
"NODE_SPECIAL");
7258 else if (((*yyvaluep).node)) {
7259 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7267 case YYSYMBOL_stmt_or_begin:
7271 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7272 rb_parser_printf(p,
"NODE_SPECIAL");
7274 else if (((*yyvaluep).node)) {
7275 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7287 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7288 rb_parser_printf(p,
"NODE_SPECIAL");
7290 else if (((*yyvaluep).node)) {
7291 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7299 case YYSYMBOL_command_asgn:
7303 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7304 rb_parser_printf(p,
"NODE_SPECIAL");
7306 else if (((*yyvaluep).node)) {
7307 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7315 case YYSYMBOL_endless_command:
7319 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7320 rb_parser_printf(p,
"NODE_SPECIAL");
7322 else if (((*yyvaluep).node)) {
7323 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7331 case YYSYMBOL_command_rhs:
7335 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7336 rb_parser_printf(p,
"NODE_SPECIAL");
7338 else if (((*yyvaluep).node)) {
7339 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7351 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7352 rb_parser_printf(p,
"NODE_SPECIAL");
7354 else if (((*yyvaluep).node)) {
7355 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7363 case YYSYMBOL_expr_value:
7367 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7368 rb_parser_printf(p,
"NODE_SPECIAL");
7370 else if (((*yyvaluep).node)) {
7371 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7379 case YYSYMBOL_expr_value_do:
7383 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7384 rb_parser_printf(p,
"NODE_SPECIAL");
7386 else if (((*yyvaluep).node)) {
7387 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7395 case YYSYMBOL_command_call:
7399 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7400 rb_parser_printf(p,
"NODE_SPECIAL");
7402 else if (((*yyvaluep).node)) {
7403 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7411 case YYSYMBOL_block_command:
7415 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7416 rb_parser_printf(p,
"NODE_SPECIAL");
7418 else if (((*yyvaluep).node)) {
7419 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7427 case YYSYMBOL_cmd_brace_block:
7431 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7432 rb_parser_printf(p,
"NODE_SPECIAL");
7434 else if (((*yyvaluep).node)) {
7435 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7443 case YYSYMBOL_fcall:
7447 if ((
NODE *)((*yyvaluep).node_fcall) == (
NODE *)-1) {
7448 rb_parser_printf(p,
"NODE_SPECIAL");
7450 else if (((*yyvaluep).node_fcall)) {
7451 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_fcall)))));
7459 case YYSYMBOL_command:
7463 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7464 rb_parser_printf(p,
"NODE_SPECIAL");
7466 else if (((*yyvaluep).node)) {
7467 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7475 case YYSYMBOL_mlhs_item:
7479 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7480 rb_parser_printf(p,
"NODE_SPECIAL");
7482 else if (((*yyvaluep).node)) {
7483 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7491 case YYSYMBOL_mlhs_head:
7495 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7496 rb_parser_printf(p,
"NODE_SPECIAL");
7498 else if (((*yyvaluep).node)) {
7499 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7507 case YYSYMBOL_mlhs_post:
7511 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7512 rb_parser_printf(p,
"NODE_SPECIAL");
7514 else if (((*yyvaluep).node)) {
7515 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7523 case YYSYMBOL_mlhs_node:
7527 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7528 rb_parser_printf(p,
"NODE_SPECIAL");
7530 else if (((*yyvaluep).node)) {
7531 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7543 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7544 rb_parser_printf(p,
"NODE_SPECIAL");
7546 else if (((*yyvaluep).node)) {
7547 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7555 case YYSYMBOL_cpath:
7559 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7560 rb_parser_printf(p,
"NODE_SPECIAL");
7562 else if (((*yyvaluep).node)) {
7563 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7571 case YYSYMBOL_fitem:
7575 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7576 rb_parser_printf(p,
"NODE_SPECIAL");
7578 else if (((*yyvaluep).node)) {
7579 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7587 case YYSYMBOL_undef_list:
7591 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7592 rb_parser_printf(p,
"NODE_SPECIAL");
7594 else if (((*yyvaluep).node)) {
7595 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7607 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7608 rb_parser_printf(p,
"NODE_SPECIAL");
7610 else if (((*yyvaluep).node)) {
7611 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7619 case YYSYMBOL_endless_arg:
7623 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7624 rb_parser_printf(p,
"NODE_SPECIAL");
7626 else if (((*yyvaluep).node)) {
7627 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7635 case YYSYMBOL_rel_expr:
7639 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7640 rb_parser_printf(p,
"NODE_SPECIAL");
7642 else if (((*yyvaluep).node)) {
7643 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7651 case YYSYMBOL_arg_value:
7655 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7656 rb_parser_printf(p,
"NODE_SPECIAL");
7658 else if (((*yyvaluep).node)) {
7659 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7667 case YYSYMBOL_aref_args:
7671 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7672 rb_parser_printf(p,
"NODE_SPECIAL");
7674 else if (((*yyvaluep).node)) {
7675 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7683 case YYSYMBOL_arg_rhs:
7687 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7688 rb_parser_printf(p,
"NODE_SPECIAL");
7690 else if (((*yyvaluep).node)) {
7691 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7699 case YYSYMBOL_paren_args:
7703 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7704 rb_parser_printf(p,
"NODE_SPECIAL");
7706 else if (((*yyvaluep).node)) {
7707 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7715 case YYSYMBOL_opt_paren_args:
7719 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7720 rb_parser_printf(p,
"NODE_SPECIAL");
7722 else if (((*yyvaluep).node)) {
7723 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7731 case YYSYMBOL_opt_call_args:
7735 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7736 rb_parser_printf(p,
"NODE_SPECIAL");
7738 else if (((*yyvaluep).node)) {
7739 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7747 case YYSYMBOL_call_args:
7751 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7752 rb_parser_printf(p,
"NODE_SPECIAL");
7754 else if (((*yyvaluep).node)) {
7755 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7763 case YYSYMBOL_command_args:
7767 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7768 rb_parser_printf(p,
"NODE_SPECIAL");
7770 else if (((*yyvaluep).node)) {
7771 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7779 case YYSYMBOL_block_arg:
7783 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
7784 rb_parser_printf(p,
"NODE_SPECIAL");
7786 else if (((*yyvaluep).node_block_pass)) {
7787 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
7795 case YYSYMBOL_opt_block_arg:
7799 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
7800 rb_parser_printf(p,
"NODE_SPECIAL");
7802 else if (((*yyvaluep).node_block_pass)) {
7803 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
7815 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7816 rb_parser_printf(p,
"NODE_SPECIAL");
7818 else if (((*yyvaluep).node)) {
7819 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7827 case YYSYMBOL_arg_splat:
7831 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7832 rb_parser_printf(p,
"NODE_SPECIAL");
7834 else if (((*yyvaluep).node)) {
7835 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7843 case YYSYMBOL_mrhs_arg:
7847 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7848 rb_parser_printf(p,
"NODE_SPECIAL");
7850 else if (((*yyvaluep).node)) {
7851 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7863 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7864 rb_parser_printf(p,
"NODE_SPECIAL");
7866 else if (((*yyvaluep).node)) {
7867 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7875 case YYSYMBOL_primary:
7879 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7880 rb_parser_printf(p,
"NODE_SPECIAL");
7882 else if (((*yyvaluep).node)) {
7883 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7891 case YYSYMBOL_primary_value:
7895 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7896 rb_parser_printf(p,
"NODE_SPECIAL");
7898 else if (((*yyvaluep).node)) {
7899 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7907 case YYSYMBOL_if_tail:
7911 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7912 rb_parser_printf(p,
"NODE_SPECIAL");
7914 else if (((*yyvaluep).node)) {
7915 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7923 case YYSYMBOL_opt_else:
7927 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7928 rb_parser_printf(p,
"NODE_SPECIAL");
7930 else if (((*yyvaluep).node)) {
7931 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7939 case YYSYMBOL_for_var:
7943 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7944 rb_parser_printf(p,
"NODE_SPECIAL");
7946 else if (((*yyvaluep).node)) {
7947 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7955 case YYSYMBOL_f_marg:
7959 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7960 rb_parser_printf(p,
"NODE_SPECIAL");
7962 else if (((*yyvaluep).node)) {
7963 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7971 case YYSYMBOL_f_marg_list:
7975 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7976 rb_parser_printf(p,
"NODE_SPECIAL");
7978 else if (((*yyvaluep).node)) {
7979 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7987 case YYSYMBOL_f_rest_marg:
7991 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7992 rb_parser_printf(p,
"NODE_SPECIAL");
7994 else if (((*yyvaluep).node)) {
7995 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8003 case YYSYMBOL_block_args_tail:
8007 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
8008 rb_parser_printf(p,
"NODE_SPECIAL");
8010 else if (((*yyvaluep).node_args)) {
8011 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
8019 case YYSYMBOL_opt_block_args_tail:
8023 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
8024 rb_parser_printf(p,
"NODE_SPECIAL");
8026 else if (((*yyvaluep).node_args)) {
8027 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
8035 case YYSYMBOL_block_param:
8039 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
8040 rb_parser_printf(p,
"NODE_SPECIAL");
8042 else if (((*yyvaluep).node_args)) {
8043 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
8051 case YYSYMBOL_opt_block_param:
8055 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
8056 rb_parser_printf(p,
"NODE_SPECIAL");
8058 else if (((*yyvaluep).node_args)) {
8059 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
8067 case YYSYMBOL_block_param_def:
8071 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
8072 rb_parser_printf(p,
"NODE_SPECIAL");
8074 else if (((*yyvaluep).node_args)) {
8075 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
8083 case YYSYMBOL_opt_bv_decl:
8087 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8088 rb_parser_printf(p,
"NODE_SPECIAL");
8090 else if (((*yyvaluep).node)) {
8091 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8099 case YYSYMBOL_bv_decls:
8103 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8104 rb_parser_printf(p,
"NODE_SPECIAL");
8106 else if (((*yyvaluep).node)) {
8107 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8119 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8120 rb_parser_printf(p,
"NODE_SPECIAL");
8122 else if (((*yyvaluep).node)) {
8123 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8131 case YYSYMBOL_numparam:
8135 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8136 rb_parser_printf(p,
"NODE_SPECIAL");
8138 else if (((*yyvaluep).node)) {
8139 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8147 case YYSYMBOL_lambda:
8151 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8152 rb_parser_printf(p,
"NODE_SPECIAL");
8154 else if (((*yyvaluep).node)) {
8155 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8163 case YYSYMBOL_f_larglist:
8167 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
8168 rb_parser_printf(p,
"NODE_SPECIAL");
8170 else if (((*yyvaluep).node_args)) {
8171 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
8179 case YYSYMBOL_lambda_body:
8183 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8184 rb_parser_printf(p,
"NODE_SPECIAL");
8186 else if (((*yyvaluep).node)) {
8187 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8195 case YYSYMBOL_do_block:
8199 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8200 rb_parser_printf(p,
"NODE_SPECIAL");
8202 else if (((*yyvaluep).node)) {
8203 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8211 case YYSYMBOL_block_call:
8215 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8216 rb_parser_printf(p,
"NODE_SPECIAL");
8218 else if (((*yyvaluep).node)) {
8219 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8227 case YYSYMBOL_method_call:
8231 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8232 rb_parser_printf(p,
"NODE_SPECIAL");
8234 else if (((*yyvaluep).node)) {
8235 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8243 case YYSYMBOL_brace_block:
8247 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8248 rb_parser_printf(p,
"NODE_SPECIAL");
8250 else if (((*yyvaluep).node)) {
8251 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8259 case YYSYMBOL_brace_body:
8263 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8264 rb_parser_printf(p,
"NODE_SPECIAL");
8266 else if (((*yyvaluep).node)) {
8267 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8275 case YYSYMBOL_do_body:
8279 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8280 rb_parser_printf(p,
"NODE_SPECIAL");
8282 else if (((*yyvaluep).node)) {
8283 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8291 case YYSYMBOL_case_args:
8295 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8296 rb_parser_printf(p,
"NODE_SPECIAL");
8298 else if (((*yyvaluep).node)) {
8299 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8307 case YYSYMBOL_case_body:
8311 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8312 rb_parser_printf(p,
"NODE_SPECIAL");
8314 else if (((*yyvaluep).node)) {
8315 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8323 case YYSYMBOL_cases:
8327 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8328 rb_parser_printf(p,
"NODE_SPECIAL");
8330 else if (((*yyvaluep).node)) {
8331 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8339 case YYSYMBOL_p_case_body:
8343 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8344 rb_parser_printf(p,
"NODE_SPECIAL");
8346 else if (((*yyvaluep).node)) {
8347 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8355 case YYSYMBOL_p_cases:
8359 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8360 rb_parser_printf(p,
"NODE_SPECIAL");
8362 else if (((*yyvaluep).node)) {
8363 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8371 case YYSYMBOL_p_top_expr:
8375 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8376 rb_parser_printf(p,
"NODE_SPECIAL");
8378 else if (((*yyvaluep).node)) {
8379 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8387 case YYSYMBOL_p_top_expr_body:
8391 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8392 rb_parser_printf(p,
"NODE_SPECIAL");
8394 else if (((*yyvaluep).node)) {
8395 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8403 case YYSYMBOL_p_expr:
8407 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8408 rb_parser_printf(p,
"NODE_SPECIAL");
8410 else if (((*yyvaluep).node)) {
8411 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8423 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8424 rb_parser_printf(p,
"NODE_SPECIAL");
8426 else if (((*yyvaluep).node)) {
8427 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8435 case YYSYMBOL_p_alt:
8439 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8440 rb_parser_printf(p,
"NODE_SPECIAL");
8442 else if (((*yyvaluep).node)) {
8443 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8451 case YYSYMBOL_p_expr_basic:
8455 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8456 rb_parser_printf(p,
"NODE_SPECIAL");
8458 else if (((*yyvaluep).node)) {
8459 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8467 case YYSYMBOL_p_args:
8471 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8472 rb_parser_printf(p,
"NODE_SPECIAL");
8474 else if (((*yyvaluep).node)) {
8475 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8483 case YYSYMBOL_p_args_head:
8487 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8488 rb_parser_printf(p,
"NODE_SPECIAL");
8490 else if (((*yyvaluep).node)) {
8491 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8499 case YYSYMBOL_p_args_tail:
8503 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8504 rb_parser_printf(p,
"NODE_SPECIAL");
8506 else if (((*yyvaluep).node)) {
8507 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8515 case YYSYMBOL_p_find:
8519 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8520 rb_parser_printf(p,
"NODE_SPECIAL");
8522 else if (((*yyvaluep).node)) {
8523 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8531 case YYSYMBOL_p_rest:
8535 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8536 rb_parser_printf(p,
"NODE_SPECIAL");
8538 else if (((*yyvaluep).node)) {
8539 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8547 case YYSYMBOL_p_args_post:
8551 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8552 rb_parser_printf(p,
"NODE_SPECIAL");
8554 else if (((*yyvaluep).node)) {
8555 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8563 case YYSYMBOL_p_arg:
8567 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8568 rb_parser_printf(p,
"NODE_SPECIAL");
8570 else if (((*yyvaluep).node)) {
8571 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8579 case YYSYMBOL_p_kwargs:
8583 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8584 rb_parser_printf(p,
"NODE_SPECIAL");
8586 else if (((*yyvaluep).node)) {
8587 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8595 case YYSYMBOL_p_kwarg:
8599 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8600 rb_parser_printf(p,
"NODE_SPECIAL");
8602 else if (((*yyvaluep).node)) {
8603 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8615 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8616 rb_parser_printf(p,
"NODE_SPECIAL");
8618 else if (((*yyvaluep).node)) {
8619 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8627 case YYSYMBOL_p_value:
8631 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8632 rb_parser_printf(p,
"NODE_SPECIAL");
8634 else if (((*yyvaluep).node)) {
8635 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8643 case YYSYMBOL_p_primitive:
8647 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8648 rb_parser_printf(p,
"NODE_SPECIAL");
8650 else if (((*yyvaluep).node)) {
8651 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8659 case YYSYMBOL_p_variable:
8663 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8664 rb_parser_printf(p,
"NODE_SPECIAL");
8666 else if (((*yyvaluep).node)) {
8667 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8675 case YYSYMBOL_p_var_ref:
8679 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8680 rb_parser_printf(p,
"NODE_SPECIAL");
8682 else if (((*yyvaluep).node)) {
8683 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8691 case YYSYMBOL_p_expr_ref:
8695 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8696 rb_parser_printf(p,
"NODE_SPECIAL");
8698 else if (((*yyvaluep).node)) {
8699 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8707 case YYSYMBOL_p_const:
8711 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8712 rb_parser_printf(p,
"NODE_SPECIAL");
8714 else if (((*yyvaluep).node)) {
8715 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8723 case YYSYMBOL_opt_rescue:
8727 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8728 rb_parser_printf(p,
"NODE_SPECIAL");
8730 else if (((*yyvaluep).node)) {
8731 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8739 case YYSYMBOL_exc_list:
8743 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8744 rb_parser_printf(p,
"NODE_SPECIAL");
8746 else if (((*yyvaluep).node)) {
8747 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8755 case YYSYMBOL_exc_var:
8759 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8760 rb_parser_printf(p,
"NODE_SPECIAL");
8762 else if (((*yyvaluep).node)) {
8763 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8771 case YYSYMBOL_opt_ensure:
8775 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8776 rb_parser_printf(p,
"NODE_SPECIAL");
8778 else if (((*yyvaluep).node)) {
8779 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8787 case YYSYMBOL_literal:
8791 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8792 rb_parser_printf(p,
"NODE_SPECIAL");
8794 else if (((*yyvaluep).node)) {
8795 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8803 case YYSYMBOL_strings:
8807 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8808 rb_parser_printf(p,
"NODE_SPECIAL");
8810 else if (((*yyvaluep).node)) {
8811 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8819 case YYSYMBOL_string:
8823 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8824 rb_parser_printf(p,
"NODE_SPECIAL");
8826 else if (((*yyvaluep).node)) {
8827 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8835 case YYSYMBOL_string1:
8839 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8840 rb_parser_printf(p,
"NODE_SPECIAL");
8842 else if (((*yyvaluep).node)) {
8843 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8851 case YYSYMBOL_xstring:
8855 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8856 rb_parser_printf(p,
"NODE_SPECIAL");
8858 else if (((*yyvaluep).node)) {
8859 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8867 case YYSYMBOL_regexp:
8871 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8872 rb_parser_printf(p,
"NODE_SPECIAL");
8874 else if (((*yyvaluep).node)) {
8875 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8883 case YYSYMBOL_words:
8887 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8888 rb_parser_printf(p,
"NODE_SPECIAL");
8890 else if (((*yyvaluep).node)) {
8891 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8899 case YYSYMBOL_word_list:
8903 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8904 rb_parser_printf(p,
"NODE_SPECIAL");
8906 else if (((*yyvaluep).node)) {
8907 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8919 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8920 rb_parser_printf(p,
"NODE_SPECIAL");
8922 else if (((*yyvaluep).node)) {
8923 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8931 case YYSYMBOL_symbols:
8935 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8936 rb_parser_printf(p,
"NODE_SPECIAL");
8938 else if (((*yyvaluep).node)) {
8939 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8947 case YYSYMBOL_symbol_list:
8951 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8952 rb_parser_printf(p,
"NODE_SPECIAL");
8954 else if (((*yyvaluep).node)) {
8955 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8963 case YYSYMBOL_qwords:
8967 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8968 rb_parser_printf(p,
"NODE_SPECIAL");
8970 else if (((*yyvaluep).node)) {
8971 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8979 case YYSYMBOL_qsymbols:
8983 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8984 rb_parser_printf(p,
"NODE_SPECIAL");
8986 else if (((*yyvaluep).node)) {
8987 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8995 case YYSYMBOL_qword_list:
8999 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9000 rb_parser_printf(p,
"NODE_SPECIAL");
9002 else if (((*yyvaluep).node)) {
9003 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9011 case YYSYMBOL_qsym_list:
9015 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9016 rb_parser_printf(p,
"NODE_SPECIAL");
9018 else if (((*yyvaluep).node)) {
9019 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9027 case YYSYMBOL_string_contents:
9031 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9032 rb_parser_printf(p,
"NODE_SPECIAL");
9034 else if (((*yyvaluep).node)) {
9035 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9043 case YYSYMBOL_xstring_contents:
9047 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9048 rb_parser_printf(p,
"NODE_SPECIAL");
9050 else if (((*yyvaluep).node)) {
9051 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9059 case YYSYMBOL_regexp_contents:
9063 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9064 rb_parser_printf(p,
"NODE_SPECIAL");
9066 else if (((*yyvaluep).node)) {
9067 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9075 case YYSYMBOL_string_content:
9079 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9080 rb_parser_printf(p,
"NODE_SPECIAL");
9082 else if (((*yyvaluep).node)) {
9083 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9091 case YYSYMBOL_string_dvar:
9095 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9096 rb_parser_printf(p,
"NODE_SPECIAL");
9098 else if (((*yyvaluep).node)) {
9099 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9107 case YYSYMBOL_symbol:
9111 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9112 rb_parser_printf(p,
"NODE_SPECIAL");
9114 else if (((*yyvaluep).node)) {
9115 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9127 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9128 rb_parser_printf(p,
"NODE_SPECIAL");
9130 else if (((*yyvaluep).node)) {
9131 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9143 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9144 rb_parser_printf(p,
"NODE_SPECIAL");
9146 else if (((*yyvaluep).node)) {
9147 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9155 case YYSYMBOL_numeric:
9159 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9160 rb_parser_printf(p,
"NODE_SPECIAL");
9162 else if (((*yyvaluep).node)) {
9163 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9171 case YYSYMBOL_simple_numeric:
9175 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9176 rb_parser_printf(p,
"NODE_SPECIAL");
9178 else if (((*yyvaluep).node)) {
9179 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9187 case YYSYMBOL_var_ref:
9191 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9192 rb_parser_printf(p,
"NODE_SPECIAL");
9194 else if (((*yyvaluep).node)) {
9195 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9203 case YYSYMBOL_var_lhs:
9207 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9208 rb_parser_printf(p,
"NODE_SPECIAL");
9210 else if (((*yyvaluep).node)) {
9211 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9219 case YYSYMBOL_backref:
9223 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9224 rb_parser_printf(p,
"NODE_SPECIAL");
9226 else if (((*yyvaluep).node)) {
9227 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9235 case YYSYMBOL_superclass:
9239 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9240 rb_parser_printf(p,
"NODE_SPECIAL");
9242 else if (((*yyvaluep).node)) {
9243 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9251 case YYSYMBOL_f_opt_paren_args:
9255 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9256 rb_parser_printf(p,
"NODE_SPECIAL");
9258 else if (((*yyvaluep).node_args)) {
9259 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9267 case YYSYMBOL_f_paren_args:
9271 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9272 rb_parser_printf(p,
"NODE_SPECIAL");
9274 else if (((*yyvaluep).node_args)) {
9275 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9283 case YYSYMBOL_f_arglist:
9287 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9288 rb_parser_printf(p,
"NODE_SPECIAL");
9290 else if (((*yyvaluep).node_args)) {
9291 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9299 case YYSYMBOL_args_tail:
9303 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9304 rb_parser_printf(p,
"NODE_SPECIAL");
9306 else if (((*yyvaluep).node_args)) {
9307 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9315 case YYSYMBOL_opt_args_tail:
9319 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9320 rb_parser_printf(p,
"NODE_SPECIAL");
9322 else if (((*yyvaluep).node_args)) {
9323 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9331 case YYSYMBOL_f_args:
9335 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9336 rb_parser_printf(p,
"NODE_SPECIAL");
9338 else if (((*yyvaluep).node_args)) {
9339 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9347 case YYSYMBOL_f_arg_item:
9351 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
9352 rb_parser_printf(p,
"NODE_SPECIAL");
9354 else if (((*yyvaluep).node_args_aux)) {
9355 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
9363 case YYSYMBOL_f_arg:
9367 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
9368 rb_parser_printf(p,
"NODE_SPECIAL");
9370 else if (((*yyvaluep).node_args_aux)) {
9371 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
9383 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9384 rb_parser_printf(p,
"NODE_SPECIAL");
9386 else if (((*yyvaluep).node_kw_arg)) {
9387 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9395 case YYSYMBOL_f_block_kw:
9399 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9400 rb_parser_printf(p,
"NODE_SPECIAL");
9402 else if (((*yyvaluep).node_kw_arg)) {
9403 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9411 case YYSYMBOL_f_block_kwarg:
9415 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9416 rb_parser_printf(p,
"NODE_SPECIAL");
9418 else if (((*yyvaluep).node_kw_arg)) {
9419 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9427 case YYSYMBOL_f_kwarg:
9431 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9432 rb_parser_printf(p,
"NODE_SPECIAL");
9434 else if (((*yyvaluep).node_kw_arg)) {
9435 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9443 case YYSYMBOL_f_opt:
9447 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9448 rb_parser_printf(p,
"NODE_SPECIAL");
9450 else if (((*yyvaluep).node_opt_arg)) {
9451 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9459 case YYSYMBOL_f_block_opt:
9463 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9464 rb_parser_printf(p,
"NODE_SPECIAL");
9466 else if (((*yyvaluep).node_opt_arg)) {
9467 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9475 case YYSYMBOL_f_block_optarg:
9479 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9480 rb_parser_printf(p,
"NODE_SPECIAL");
9482 else if (((*yyvaluep).node_opt_arg)) {
9483 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9491 case YYSYMBOL_f_optarg:
9495 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9496 rb_parser_printf(p,
"NODE_SPECIAL");
9498 else if (((*yyvaluep).node_opt_arg)) {
9499 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9507 case YYSYMBOL_singleton:
9511 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9512 rb_parser_printf(p,
"NODE_SPECIAL");
9514 else if (((*yyvaluep).node)) {
9515 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9523 case YYSYMBOL_assoc_list:
9527 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9528 rb_parser_printf(p,
"NODE_SPECIAL");
9530 else if (((*yyvaluep).node)) {
9531 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9539 case YYSYMBOL_assocs:
9543 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9544 rb_parser_printf(p,
"NODE_SPECIAL");
9546 else if (((*yyvaluep).node)) {
9547 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9555 case YYSYMBOL_assoc:
9559 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9560 rb_parser_printf(p,
"NODE_SPECIAL");
9562 else if (((*yyvaluep).node)) {
9563 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9575 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9576 rb_parser_printf(p,
"NODE_SPECIAL");
9578 else if (((*yyvaluep).node)) {
9579 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9590 YY_IGNORE_MAYBE_UNINITIALIZED_END
9599yy_symbol_print (
FILE *yyo,
9602 YYFPRINTF (yyo,
"%s %s (",
9603 yykind < YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
9605 YYLOCATION_PRINT (yyo, yylocationp, p);
9606 YYFPRINTF (yyo,
": ");
9607 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
9608 YYFPRINTF (yyo,
")");
9617yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop,
struct parser_params *p)
9619 YYFPRINTF (stderr,
"Stack now");
9620 for (; yybottom <= yytop; yybottom++)
9622 int yybot = *yybottom;
9623 YYFPRINTF (stderr,
" %d", yybot);
9625 YYFPRINTF (stderr,
"\n");
9628# define YY_STACK_PRINT(Bottom, Top, p) \
9631 yy_stack_print ((Bottom), (Top), p); \
9640yy_reduce_print (yy_state_t *yyssp,
YYSTYPE *yyvsp,
YYLTYPE *yylsp,
9643 int yylno = yyrline[yyrule];
9644 int yynrhs = yyr2[yyrule];
9646 YYFPRINTF (stderr,
"Reducing stack by rule %d (line %d):\n",
9649 for (yyi = 0; yyi < yynrhs; yyi++)
9651 YYFPRINTF (stderr,
" $%d = ", yyi + 1);
9652 yy_symbol_print (stderr,
9653 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
9654 &yyvsp[(yyi + 1) - (yynrhs)],
9655 &(yylsp[(yyi + 1) - (yynrhs)]), p);
9656 YYFPRINTF (stderr,
"\n");
9660# define YY_REDUCE_PRINT(Rule, p) \
9663 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
9672# define YYDPRINTF(Args) ((void) 0)
9673# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p)
9674# define YY_STACK_PRINT(Bottom, Top, p)
9675# define YY_REDUCE_PRINT(Rule, p)
9681# define YYINITDEPTH 200
9692# define YYMAXDEPTH 10000
9700 yysymbol_kind_t yytoken;
9712 yysymbol_kind_t yyarg[],
int yyargn)
9716 int yyn = yypact[+*yyctx->yyssp];
9717 if (!yypact_value_is_default (yyn))
9722 int yyxbegin = yyn < 0 ? -yyn : 0;
9724 int yychecklim = YYLAST - yyn + 1;
9725 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
9727 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
9728 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
9729 && !yytable_value_is_error (yytable[yyx + yyn]))
9733 else if (yycount == yyargn)
9736 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
9739 if (yyarg && yycount == 0 && 0 < yyargn)
9740 yyarg[0] = YYSYMBOL_YYEMPTY;
9748# if defined __GLIBC__ && defined _STRING_H
9749# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
9753yystrlen (
const char *yystr)
9756 for (yylen = 0; yystr[yylen]; yylen++)
9764# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
9765# define yystpcpy stpcpy
9770yystpcpy (
char *yydest,
const char *yysrc)
9773 const char *yys = yysrc;
9775 while ((*yyd++ = *yys++) !=
'\0')
9792yytnamerr (
char *yyres,
const char *yystr)
9796 YYPTRDIFF_T yyn = 0;
9797 char const *yyp = yystr;
9803 goto do_not_strip_quotes;
9807 goto do_not_strip_quotes;
9823 do_not_strip_quotes: ;
9827 return yystpcpy (yyres, yystr) - yyres;
9829 return yystrlen (yystr);
9836 yysymbol_kind_t yyarg[],
int yyargn)
9863 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
9867 yyarg[yycount] = yyctx->yytoken;
9869 yyn = yypcontext_expected_tokens (yyctx,
9870 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
9871 if (yyn == YYENOMEM)
9888yysyntax_error (YYPTRDIFF_T *yymsg_alloc,
char **yymsg,
9891 enum { YYARGS_MAX = 5 };
9893 const char *yyformat = YY_NULLPTR;
9896 yysymbol_kind_t yyarg[YYARGS_MAX];
9898 YYPTRDIFF_T yysize = 0;
9901 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
9902 if (yycount == YYENOMEM)
9907#define YYCASE_(N, S) \
9912 YYCASE_(0, YY_(
"syntax error"));
9913 YYCASE_(1, YY_(
"syntax error, unexpected %s"));
9914 YYCASE_(2, YY_(
"syntax error, unexpected %s, expecting %s"));
9915 YYCASE_(3, YY_(
"syntax error, unexpected %s, expecting %s or %s"));
9916 YYCASE_(4, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
9917 YYCASE_(5, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
9923 yysize = yystrlen (yyformat) - 2 * yycount + 1;
9926 for (yyi = 0; yyi < yycount; ++yyi)
9929 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
9930 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
9937 if (*yymsg_alloc < yysize)
9939 *yymsg_alloc = 2 * yysize;
9940 if (! (yysize <= *yymsg_alloc
9941 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
9942 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
9952 while ((*yyp = *yyformat) !=
'\0')
9953 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
9955 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
9973yydestruct (
const char *yymsg,
9977 YY_USE (yylocationp);
9981 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp, p);
9983 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
9985 YY_IGNORE_MAYBE_UNINITIALIZED_END
10007YY_INITIAL_VALUE (
static const YYSTYPE yyval_default;)
10008YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
10011static const YYLTYPE yyloc_default
10012# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
10016YYLTYPE yylloc = yyloc_default;
10022 yy_state_fast_t yystate = 0;
10024 int yyerrstatus = 0;
10030 YYPTRDIFF_T yystacksize = YYINITDEPTH;
10033 yy_state_t yyssa[YYINITDEPTH];
10034 yy_state_t *yyss = yyssa;
10035 yy_state_t *yyssp = yyss;
10051 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
10061 char yymsgbuf[128];
10062 char *yymsg = yymsgbuf;
10063 YYPTRDIFF_T yymsg_alloc =
sizeof yymsgbuf;
10065#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
10071 YYDPRINTF ((stderr,
"Starting parse\n"));
10077#line 1958 "parse.y"
10079 RUBY_SET_YYLLOC_OF_NONE(yylloc);
10082#line 10083 "parse.c"
10101 YYDPRINTF ((stderr,
"Entering state %d\n", yystate));
10102 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
10103 YY_IGNORE_USELESS_CAST_BEGIN
10104 *yyssp = YY_CAST (yy_state_t, yystate);
10105 YY_IGNORE_USELESS_CAST_END
10106 YY_STACK_PRINT (yyss, yyssp, p);
10108 if (yyss + yystacksize - 1 <= yyssp)
10109#if !defined yyoverflow && !defined YYSTACK_RELOCATE
10114 YYPTRDIFF_T yysize = yyssp - yyss + 1;
10116# if defined yyoverflow
10121 yy_state_t *yyss1 = yyss;
10129 yyoverflow (YY_(
"memory exhausted"),
10130 &yyss1, yysize * YYSIZEOF (*yyssp),
10131 &yyvs1, yysize * YYSIZEOF (*yyvsp),
10132 &yyls1, yysize * YYSIZEOF (*yylsp),
10140 if (YYMAXDEPTH <= yystacksize)
10143 if (YYMAXDEPTH < yystacksize)
10144 yystacksize = YYMAXDEPTH;
10147 yy_state_t *yyss1 = yyss;
10148 union yyalloc *yyptr =
10149 YY_CAST (
union yyalloc *,
10150 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
10153 YYSTACK_RELOCATE (yyss_alloc, yyss);
10154 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
10155 YYSTACK_RELOCATE (yyls_alloc, yyls);
10156# undef YYSTACK_RELOCATE
10157 if (yyss1 != yyssa)
10158 YYSTACK_FREE (yyss1);
10162 yyssp = yyss + yysize - 1;
10163 yyvsp = yyvs + yysize - 1;
10164 yylsp = yyls + yysize - 1;
10166 YY_IGNORE_USELESS_CAST_BEGIN
10167 YYDPRINTF ((stderr,
"Stack size increased to %ld\n",
10168 YY_CAST (
long, yystacksize)));
10169 YY_IGNORE_USELESS_CAST_END
10171 if (yyss + yystacksize - 1 <= yyssp)
10177 if (yystate == YYFINAL)
10191 yyn = yypact[yystate];
10192 if (yypact_value_is_default (yyn))
10198 if (yychar == YYEMPTY)
10200 YYDPRINTF ((stderr,
"Reading a token\n"));
10201 yychar = yylex (&yylval, &yylloc, p);
10204 if (yychar <= END_OF_INPUT)
10206 yychar = END_OF_INPUT;
10207 yytoken = YYSYMBOL_YYEOF;
10208 YYDPRINTF ((stderr,
"Now at end of input.\n"));
10210 else if (yychar == YYerror)
10217 yytoken = YYSYMBOL_YYerror;
10218 yyerror_range[1] = yylloc;
10223 yytoken = YYTRANSLATE (yychar);
10224 YY_SYMBOL_PRINT (
"Next token is", yytoken, &yylval, &yylloc, p);
10230 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
10232 yyn = yytable[yyn];
10235 if (yytable_value_is_error (yyn))
10247 YY_SYMBOL_PRINT (
"Shifting", yytoken, &yylval, &yylloc, p);
10249 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
10251 YY_IGNORE_MAYBE_UNINITIALIZED_END
10263 yyn = yydefact[yystate];
10284 yyval = yyvsp[1-yylen];
10287 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
10288 yyerror_range[1] = yyloc;
10289 YY_REDUCE_PRINT (yyn, p);
10293#line 2193 "parse.y"
10295 SET_LEX_STATE(EXPR_BEG);
10296 local_push(p, ifndef_ripper(1)+0);
10298 if (!ifndef_ripper(p->do_loop) + 0) init_block_exit(p);
10300#line 10301 "parse.c"
10304#line 2200 "parse.y"
10307 if ((yyvsp[0].node) && !compile_for_eval) {
10308 NODE *node = (yyvsp[0].node);
10310 if (nd_type_p(node, NODE_BLOCK)) {
10311 while (RNODE_BLOCK(node)->nd_next) {
10312 node = RNODE_BLOCK(node)->nd_next;
10314 node = RNODE_BLOCK(node)->nd_head;
10316 node = remove_begin(node);
10317 void_expr(p, node);
10319 p->eval_tree = NEW_SCOPE(0, block_append(p, p->eval_tree, (yyvsp[0].node)), &(yyloc));
10324#line 10325 "parse.c"
10328#line 2222 "parse.y"
10330 (yyval.node) = void_stmts(p, (yyvsp[-1].node));
10332#line 10333 "parse.c"
10336#line 2228 "parse.y"
10339 (yyval.node) = NEW_BEGIN(0, &(yyloc));
10343#line 10344 "parse.c"
10347#line 2235 "parse.y"
10350 (yyval.node) = newline_node((yyvsp[0].node));
10354#line 10355 "parse.c"
10358#line 2242 "parse.y"
10361 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
10365#line 10366 "parse.c"
10369#line 2251 "parse.y"
10371 clear_block_exit(p,
true);
10372 (yyval.node) = (yyvsp[0].node);
10374#line 10375 "parse.c"
10378#line 2256 "parse.y"
10380 (yyval.node) = (yyvsp[0].node);
10382#line 10383 "parse.c"
10386#line 2261 "parse.y"
10387 {(yyval.node_exits) = init_block_exit(p);}
10388#line 10389 "parse.c"
10392#line 2264 "parse.y"
10394 restore_block_exit(p, (yyvsp[-2].node_exits));
10396 p->eval_tree_begin = block_append(p, p->eval_tree_begin,
10397 NEW_BEGIN((yyvsp[-1].node), &(yyloc)));
10398 (yyval.node) = NEW_BEGIN(0, &(yyloc));
10402#line 10403 "parse.c"
10406#line 2279 "parse.y"
10408 if (!(yyvsp[-1].node)) yyerror1(&(yylsp[0]),
"else without rescue is useless");
10409 next_rescue_context(&p->ctxt, &(yyvsp[-2].ctxt), after_else);
10411#line 10412 "parse.c"
10415#line 2284 "parse.y"
10417 next_rescue_context(&p->ctxt, &(yyvsp[-4].ctxt), after_ensure);
10419#line 10420 "parse.c"
10423#line 2288 "parse.y"
10426 (yyval.node) = new_bodystmt(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
10430#line 10431 "parse.c"
10434#line 2297 "parse.y"
10436 next_rescue_context(&p->ctxt, &(yyvsp[-1].ctxt), after_ensure);
10438#line 10439 "parse.c"
10442#line 2301 "parse.y"
10445 (yyval.node) = new_bodystmt(p, (yyvsp[-4].node), (yyvsp[-2].node), 0, (yyvsp[0].node), &(yyloc));
10449#line 10450 "parse.c"
10453#line 2310 "parse.y"
10455 (yyval.node) = void_stmts(p, (yyvsp[-1].node));
10457#line 10458 "parse.c"
10461#line 2316 "parse.y"
10464 (yyval.node) = NEW_BEGIN(0, &(yyloc));
10468#line 10469 "parse.c"
10472#line 2323 "parse.y"
10475 (yyval.node) = newline_node((yyvsp[0].node));
10479#line 10480 "parse.c"
10483#line 2330 "parse.y"
10486 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
10490#line 10491 "parse.c"
10494#line 2339 "parse.y"
10496 (yyval.node) = (yyvsp[0].node);
10498#line 10499 "parse.c"
10502#line 2343 "parse.y"
10504 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
10506#line 10507 "parse.c"
10510#line 2347 "parse.y"
10512 (yyval.node) = (yyvsp[0].node);
10514#line 10515 "parse.c"
10518#line 2352 "parse.y"
10519 {(yyval.node_exits) = allow_block_exit(p);}
10520#line 10521 "parse.c"
10524#line 2355 "parse.y"
10526 (yyval.ctxt) = (yyvsp[0].ctxt);
10527 p->ctxt.in_rescue = before_rescue;
10529#line 10530 "parse.c"
10533#line 2360 "parse.y"
10534 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
10535#line 10536 "parse.c"
10539#line 2361 "parse.y"
10542 (yyval.node) = NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
10546#line 10547 "parse.c"
10550#line 2368 "parse.y"
10553 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].id), &(yyloc));
10557#line 10558 "parse.c"
10561#line 2375 "parse.y"
10566 buf[1] = (char)RNODE_BACK_REF((yyvsp[0].node))->nd_nth;
10567 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), rb_intern2(buf, 2), &(yyloc));
10571#line 10572 "parse.c"
10575#line 2385 "parse.y"
10577 static const char mesg[] =
"can't make alias for the number variables";
10579 yyerror1(&(yylsp[0]), mesg);
10580 (yyval.node) = NEW_ERROR(&(yyloc));
10584#line 10585 "parse.c"
10588#line 2394 "parse.y"
10591 (yyval.node) = (yyvsp[0].node);
10595#line 10596 "parse.c"
10599#line 2401 "parse.y"
10602 (yyval.node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
10603 fixpos((yyval.node), (yyvsp[0].node));
10607#line 10608 "parse.c"
10611#line 2409 "parse.y"
10614 (yyval.node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
10615 fixpos((yyval.node), (yyvsp[0].node));
10619#line 10620 "parse.c"
10623#line 2417 "parse.y"
10625 clear_block_exit(p,
false);
10627 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
10628 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc));
10631 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc));
10636#line 10637 "parse.c"
10640#line 2430 "parse.y"
10642 clear_block_exit(p,
false);
10644 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
10645 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc));
10648 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc));
10653#line 10654 "parse.c"
10657#line 2443 "parse.y"
10659 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
10662 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10663 resq = NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc);
10664 (yyval.node) = NEW_RESCUE(remove_begin((yyvsp[-3].node)), resq, 0, &(yyloc));
10668#line 10669 "parse.c"
10672#line 2454 "parse.y"
10674 if (p->ctxt.in_def) {
10675 rb_warn0(
"END in method; use at_exit");
10677 restore_block_exit(p, (yyvsp[-3].node_exits));
10678 p->ctxt = (yyvsp[-4].ctxt);
10681 NODE *scope = NEW_SCOPE2(0 , 0 , (yyvsp[-1].node) , &(yyloc));
10682 (yyval.node) = NEW_POSTEXE(scope, &(yyloc));
10687#line 10688 "parse.c"
10691#line 2470 "parse.y"
10694 value_expr((yyvsp[0].node));
10695 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
10699#line 10700 "parse.c"
10703#line 2478 "parse.y"
10706 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
10710#line 10711 "parse.c"
10714#line 2486 "parse.y"
10716 p->ctxt.in_rescue = (yyvsp[-4].ctxt).in_rescue;
10718 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10719 (yyvsp[0].node) = NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc);
10720 loc.beg_pos = (yylsp[-3]).beg_pos;
10721 (yyvsp[-3].node) = NEW_RESCUE((yyvsp[-3].node), (yyvsp[0].node), 0, &loc);
10722 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-6].node_masgn), (yyvsp[-3].node), (yyvsp[-4].ctxt), &(yyloc));
10726#line 10727 "parse.c"
10730#line 2498 "parse.y"
10733 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
10737#line 10738 "parse.c"
10741#line 2506 "parse.y"
10745 (yyval.node) = NEW_ERROR(&(yyloc));
10748#line 10749 "parse.c"
10752#line 2515 "parse.y"
10755 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
10759#line 10760 "parse.c"
10763#line 2522 "parse.y"
10766 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
10770#line 10771 "parse.c"
10774#line 2529 "parse.y"
10777 (yyval.node) = new_ary_op_assign(p, (yyvsp[-6].node), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[0].node), &(yylsp[-4]), &(yyloc));
10782#line 10783 "parse.c"
10786#line 2537 "parse.y"
10789 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
10793#line 10794 "parse.c"
10797#line 2544 "parse.y"
10800 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
10804#line 10805 "parse.c"
10808#line 2551 "parse.y"
10811 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
10812 (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));
10816#line 10817 "parse.c"
10820#line 2559 "parse.y"
10823 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), ID2VAL(idCOLON2), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
10827#line 10828 "parse.c"
10831#line 2566 "parse.y"
10833 endless_method_name(p, get_id((yyvsp[-3].node_def_temp)->nd_mid), &(yylsp[-3]));
10834 restore_defun(p, (yyvsp[-3].node_def_temp));
10836 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), &(yyloc));
10837 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
10838 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
10844#line 10845 "parse.c"
10848#line 2579 "parse.y"
10850 endless_method_name(p, get_id((yyvsp[-3].node_def_temp)->nd_mid), &(yylsp[-3]));
10851 restore_defun(p, (yyvsp[-3].node_def_temp));
10853 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), &(yyloc));
10854 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
10855 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
10861#line 10862 "parse.c"
10865#line 2592 "parse.y"
10868 rb_backref_error(p, (yyvsp[-3].node));
10869 (yyval.node) = NEW_ERROR(&(yyloc));
10873#line 10874 "parse.c"
10877#line 2603 "parse.y"
10879 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
10881 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
10885#line 10886 "parse.c"
10889#line 2611 "parse.y"
10891 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
10893#line 10894 "parse.c"
10897#line 2617 "parse.y"
10899 value_expr((yyvsp[0].node));
10900 (yyval.node) = (yyvsp[0].node);
10902#line 10903 "parse.c"
10906#line 2622 "parse.y"
10908 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
10910 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10911 value_expr((yyvsp[-3].node));
10912 (yyval.node) = NEW_RESCUE((yyvsp[-3].node), NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc));
10916#line 10917 "parse.c"
10920#line 2636 "parse.y"
10922 (yyval.node) = logop(p, idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
10924#line 10925 "parse.c"
10928#line 2640 "parse.y"
10930 (yyval.node) = logop(p, idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
10932#line 10933 "parse.c"
10936#line 2644 "parse.y"
10938 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
10940#line 10941 "parse.c"
10944#line 2648 "parse.y"
10946 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
10948#line 10949 "parse.c"
10952#line 2652 "parse.y"
10954 value_expr((yyvsp[-1].node));
10956#line 10957 "parse.c"
10960#line 2657 "parse.y"
10962 pop_pktbl(p, (yyvsp[-1].tbl));
10963 pop_pvtbl(p, (yyvsp[-2].tbl));
10964 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
10966 (yyval.node) = NEW_CASE3((yyvsp[-6].node), NEW_IN((yyvsp[0].node), 0, 0, &(yylsp[0])), &(yyloc));
10970#line 10971 "parse.c"
10974#line 2667 "parse.y"
10976 value_expr((yyvsp[-1].node));
10978#line 10979 "parse.c"
10982#line 2672 "parse.y"
10984 pop_pktbl(p, (yyvsp[-1].tbl));
10985 pop_pvtbl(p, (yyvsp[-2].tbl));
10986 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
10988 (yyval.node) = NEW_CASE3((yyvsp[-6].node), NEW_IN((yyvsp[0].node), NEW_TRUE(&(yylsp[0])), NEW_FALSE(&(yylsp[0])), &(yylsp[0])), &(yyloc));
10992#line 10993 "parse.c"
10996#line 2685 "parse.y"
10998 ID fname = get_id((yyvsp[0].
id));
10999 numparam_name(p, fname);
11002 p->ctxt.in_def = 1;
11003 p->ctxt.in_rescue = before_rescue;
11004 (yyval.id) = (yyvsp[0].
id);
11006#line 11007 "parse.c"
11010#line 2697 "parse.y"
11012 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-1].node_def_temp));
11013 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
11015 (yyval.node_def_temp)->nd_def = NEW_DEFN((yyvsp[0].
id), 0, &(yyloc));
11020#line 11021 "parse.c"
11024#line 2709 "parse.y"
11026 SET_LEX_STATE(EXPR_FNAME);
11027 p->ctxt.in_argdef = 1;
11029#line 11030 "parse.c"
11033#line 2714 "parse.y"
11035 SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL);
11036 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-4].node_def_temp));
11037 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
11039 (yyval.node_def_temp)->nd_def = NEW_DEFS((yyvsp[-3].node), (yyvsp[0].id), 0, &(yyloc));
11046#line 11047 "parse.c"
11050#line 2729 "parse.y"
11052 value_expr((yyvsp[0].node));
11053 (yyval.node) = (yyvsp[0].node);
11055#line 11056 "parse.c"
11059#line 2734 "parse.y"
11062 (yyval.node) = NEW_ERROR(&(yyloc));
11065#line 11066 "parse.c"
11069#line 2741 "parse.y"
11071#line 11072 "parse.c"
11075#line 2741 "parse.y"
11077#line 11078 "parse.c"
11081#line 2742 "parse.y"
11083 (yyval.node) = (yyvsp[-2].node);
11085#line 11086 "parse.c"
11089#line 2753 "parse.y"
11092 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11096#line 11097 "parse.c"
11100#line 2762 "parse.y"
11102 (yyval.node) = (yyvsp[-1].node);
11104 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
11107#line 11108 "parse.c"
11111#line 2771 "parse.y"
11114 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
11118#line 11119 "parse.c"
11122#line 2780 "parse.y"
11125 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
11126 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
11127 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
11131#line 11132 "parse.c"
11135#line 2789 "parse.y"
11138 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
11139 (yyvsp[-2].node_fcall)->nd_args = (yyvsp[-1].node);
11140 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-2].node_fcall), (yyvsp[0].node), &(yyloc));
11141 fixpos((yyval.node), RNODE((yyvsp[-2].node_fcall)));
11142 nd_set_last_loc((yyvsp[-2].node_fcall), (yylsp[-1]).end_pos);
11146#line 11147 "parse.c"
11150#line 2800 "parse.y"
11153 (yyval.node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), Qnull, &(yylsp[-1]), &(yyloc));
11157#line 11158 "parse.c"
11161#line 2807 "parse.y"
11164 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
11168#line 11169 "parse.c"
11172#line 2814 "parse.y"
11175 (yyval.node) = new_command_qcall(p, ID2VAL(idCOLON2), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), Qnull, &(yylsp[-1]), &(yyloc));
11179#line 11180 "parse.c"
11183#line 2821 "parse.y"
11186 (yyval.node) = new_command_qcall(p, ID2VAL(idCOLON2), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
11190#line 11191 "parse.c"
11194#line 2828 "parse.y"
11197 set_embraced_location((yyvsp[-1].node), &(yylsp[-2]), &(yylsp[0]));
11198 (yyval.node) = new_command_qcall(p, ID2VAL(idCOLON2), (yyvsp[-5].node), (yyvsp[-3].
id), Qnull, (yyvsp[-1].node), &(yylsp[-3]), &(yyloc));
11202#line 11203 "parse.c"
11206#line 2836 "parse.y"
11209 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc));
11210 fixpos((yyval.node), (yyvsp[0].node));
11214#line 11215 "parse.c"
11218#line 2844 "parse.y"
11221 (yyval.node) = new_yield(p, (yyvsp[0].node), &(yyloc));
11222 fixpos((yyval.node), (yyvsp[0].node));
11226#line 11227 "parse.c"
11230#line 2852 "parse.y"
11233 (yyval.node) = NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc));
11237#line 11238 "parse.c"
11241#line 2859 "parse.y"
11245 args = ret_args(p, (yyvsp[0].node));
11247 (yyval.node) = add_block_exit(p, NEW_BREAK(args, &(yyloc)));
11250#line 11251 "parse.c"
11254#line 2868 "parse.y"
11258 args = ret_args(p, (yyvsp[0].node));
11260 (yyval.node) = add_block_exit(p, NEW_NEXT(args, &(yyloc)));
11263#line 11264 "parse.c"
11267#line 2880 "parse.y"
11270 (yyval.node_masgn) = (yyvsp[-1].node_masgn);
11274#line 11275 "parse.c"
11278#line 2890 "parse.y"
11281 (yyval.node_masgn) = NEW_MASGN(NEW_LIST((
NODE *)(yyvsp[-1].node_masgn), &(yyloc)), 0, &(yyloc));
11285#line 11286 "parse.c"
11289#line 2899 "parse.y"
11292 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
11296#line 11297 "parse.c"
11300#line 2906 "parse.y"
11303 (yyval.node_masgn) = NEW_MASGN(list_append(p, (yyvsp[-1].node), (yyvsp[0].node)), 0, &(yyloc));
11307#line 11308 "parse.c"
11311#line 2913 "parse.y"
11314 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11318#line 11319 "parse.c"
11322#line 2920 "parse.y"
11325 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
11329#line 11330 "parse.c"
11333#line 2927 "parse.y"
11336 (yyval.node_masgn) = NEW_MASGN((yyvsp[-1].node), NODE_SPECIAL_NO_NAME_REST, &(yyloc));
11340#line 11341 "parse.c"
11344#line 2934 "parse.y"
11347 (yyval.node_masgn) = NEW_MASGN((yyvsp[-3].node), NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
11351#line 11352 "parse.c"
11355#line 2941 "parse.y"
11358 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
11362#line 11363 "parse.c"
11366#line 2948 "parse.y"
11369 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
11373#line 11374 "parse.c"
11377#line 2955 "parse.y"
11380 (yyval.node_masgn) = NEW_MASGN(0, NODE_SPECIAL_NO_NAME_REST, &(yyloc));
11384#line 11385 "parse.c"
11388#line 2962 "parse.y"
11391 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
11395#line 11396 "parse.c"
11399#line 2972 "parse.y"
11402 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
11406#line 11407 "parse.c"
11410#line 2981 "parse.y"
11413 (yyval.node) = NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
11417#line 11418 "parse.c"
11421#line 2988 "parse.y"
11424 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
11428#line 11429 "parse.c"
11432#line 2997 "parse.y"
11435 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
11439#line 11440 "parse.c"
11443#line 3004 "parse.y"
11446 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
11450#line 11451 "parse.c"
11454#line 3013 "parse.y"
11457 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11461#line 11462 "parse.c"
11465#line 3020 "parse.y"
11468 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11472#line 11473 "parse.c"
11476#line 3027 "parse.y"
11479 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
11483#line 11484 "parse.c"
11487#line 3034 "parse.y"
11489 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
11491 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
11495#line 11496 "parse.c"
11499#line 3042 "parse.y"
11502 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
11506#line 11507 "parse.c"
11510#line 3049 "parse.y"
11512 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
11514 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
11518#line 11519 "parse.c"
11522#line 3057 "parse.y"
11525 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc)), &(yyloc));
11529#line 11530 "parse.c"
11533#line 3064 "parse.y"
11536 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
11540#line 11541 "parse.c"
11544#line 3071 "parse.y"
11547 rb_backref_error(p, (yyvsp[0].node));
11548 (yyval.node) = NEW_ERROR(&(yyloc));
11552#line 11553 "parse.c"
11556#line 3081 "parse.y"
11559 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11563#line 11564 "parse.c"
11567#line 3088 "parse.y"
11570 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11574#line 11575 "parse.c"
11578#line 3095 "parse.y"
11581 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
11585#line 11586 "parse.c"
11589#line 3102 "parse.y"
11592 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
11596#line 11597 "parse.c"
11600#line 3109 "parse.y"
11603 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
11607#line 11608 "parse.c"
11611#line 3116 "parse.y"
11614 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
11618#line 11619 "parse.c"
11622#line 3123 "parse.y"
11625 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc)), &(yyloc));
11629#line 11630 "parse.c"
11633#line 3130 "parse.y"
11636 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
11640#line 11641 "parse.c"
11644#line 3137 "parse.y"
11647 rb_backref_error(p, (yyvsp[0].node));
11648 (yyval.node) = NEW_ERROR(&(yyloc));
11652#line 11653 "parse.c"
11656#line 3147 "parse.y"
11658 static const char mesg[] =
"class/module name must be CONSTANT";
11660 yyerror1(&(yylsp[0]), mesg);
11664#line 11665 "parse.c"
11668#line 3158 "parse.y"
11671 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
11675#line 11676 "parse.c"
11679#line 3165 "parse.y"
11682 (yyval.node) = NEW_COLON2(0, (yyvsp[0].
id), &(yyloc));
11686#line 11687 "parse.c"
11690#line 3172 "parse.y"
11693 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
11697#line 11698 "parse.c"
11701#line 3184 "parse.y"
11703 SET_LEX_STATE(EXPR_ENDFN);
11704 (yyval.id) = (yyvsp[0].
id);
11706#line 11707 "parse.c"
11710#line 3192 "parse.y"
11713 (yyval.node) = NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc));
11717#line 11718 "parse.c"
11721#line 3202 "parse.y"
11724 (yyval.node) = NEW_UNDEF((yyvsp[0].node), &(yyloc));
11728#line 11729 "parse.c"
11732#line 3208 "parse.y"
11733 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
11734#line 11735 "parse.c"
11738#line 3209 "parse.y"
11741 NODE *undef = NEW_UNDEF((yyvsp[0].node), &(yylsp[0]));
11742 (yyval.node) = block_append(p, (yyvsp[-3].node), undef);
11746#line 11747 "parse.c"
11750#line 3218 "parse.y"
11751 { ifndef_ripper((yyval.id) =
'|'); }
11752#line 11753 "parse.c"
11756#line 3219 "parse.y"
11757 { ifndef_ripper((yyval.id) =
'^'); }
11758#line 11759 "parse.c"
11762#line 3220 "parse.y"
11763 { ifndef_ripper((yyval.id) =
'&'); }
11764#line 11765 "parse.c"
11768#line 3221 "parse.y"
11769 { ifndef_ripper((yyval.id) = tCMP); }
11770#line 11771 "parse.c"
11774#line 3222 "parse.y"
11775 { ifndef_ripper((yyval.id) = tEQ); }
11776#line 11777 "parse.c"
11780#line 3223 "parse.y"
11781 { ifndef_ripper((yyval.id) = tEQQ); }
11782#line 11783 "parse.c"
11786#line 3224 "parse.y"
11787 { ifndef_ripper((yyval.id) = tMATCH); }
11788#line 11789 "parse.c"
11792#line 3225 "parse.y"
11793 { ifndef_ripper((yyval.id) = tNMATCH); }
11794#line 11795 "parse.c"
11798#line 3226 "parse.y"
11799 { ifndef_ripper((yyval.id) =
'>'); }
11800#line 11801 "parse.c"
11804#line 3227 "parse.y"
11805 { ifndef_ripper((yyval.id) = tGEQ); }
11806#line 11807 "parse.c"
11810#line 3228 "parse.y"
11811 { ifndef_ripper((yyval.id) =
'<'); }
11812#line 11813 "parse.c"
11816#line 3229 "parse.y"
11817 { ifndef_ripper((yyval.id) = tLEQ); }
11818#line 11819 "parse.c"
11822#line 3230 "parse.y"
11823 { ifndef_ripper((yyval.id) = tNEQ); }
11824#line 11825 "parse.c"
11828#line 3231 "parse.y"
11829 { ifndef_ripper((yyval.id) = tLSHFT); }
11830#line 11831 "parse.c"
11834#line 3232 "parse.y"
11835 { ifndef_ripper((yyval.id) = tRSHFT); }
11836#line 11837 "parse.c"
11840#line 3233 "parse.y"
11841 { ifndef_ripper((yyval.id) =
'+'); }
11842#line 11843 "parse.c"
11846#line 3234 "parse.y"
11847 { ifndef_ripper((yyval.id) =
'-'); }
11848#line 11849 "parse.c"
11852#line 3235 "parse.y"
11853 { ifndef_ripper((yyval.id) =
'*'); }
11854#line 11855 "parse.c"
11858#line 3236 "parse.y"
11859 { ifndef_ripper((yyval.id) =
'*'); }
11860#line 11861 "parse.c"
11864#line 3237 "parse.y"
11865 { ifndef_ripper((yyval.id) =
'/'); }
11866#line 11867 "parse.c"
11870#line 3238 "parse.y"
11871 { ifndef_ripper((yyval.id) =
'%'); }
11872#line 11873 "parse.c"
11876#line 3239 "parse.y"
11877 { ifndef_ripper((yyval.id) = tPOW); }
11878#line 11879 "parse.c"
11882#line 3240 "parse.y"
11883 { ifndef_ripper((yyval.id) = tDSTAR); }
11884#line 11885 "parse.c"
11888#line 3241 "parse.y"
11889 { ifndef_ripper((yyval.id) =
'!'); }
11890#line 11891 "parse.c"
11894#line 3242 "parse.y"
11895 { ifndef_ripper((yyval.id) =
'~'); }
11896#line 11897 "parse.c"
11900#line 3243 "parse.y"
11901 { ifndef_ripper((yyval.id) = tUPLUS); }
11902#line 11903 "parse.c"
11906#line 3244 "parse.y"
11907 { ifndef_ripper((yyval.id) = tUMINUS); }
11908#line 11909 "parse.c"
11912#line 3245 "parse.y"
11913 { ifndef_ripper((yyval.id) = tAREF); }
11914#line 11915 "parse.c"
11918#line 3246 "parse.y"
11919 { ifndef_ripper((yyval.id) = tASET); }
11920#line 11921 "parse.c"
11924#line 3247 "parse.y"
11925 { ifndef_ripper((yyval.id) =
'`'); }
11926#line 11927 "parse.c"
11930#line 3265 "parse.y"
11933 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11937#line 11938 "parse.c"
11941#line 3272 "parse.y"
11944 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11948#line 11949 "parse.c"
11952#line 3279 "parse.y"
11955 (yyval.node) = new_ary_op_assign(p, (yyvsp[-6].node), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[0].node), &(yylsp[-4]), &(yyloc));
11959#line 11960 "parse.c"
11963#line 3286 "parse.y"
11966 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
11970#line 11971 "parse.c"
11974#line 3293 "parse.y"
11977 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
11981#line 11982 "parse.c"
11985#line 3300 "parse.y"
11988 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), ID2VAL(idCOLON2), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
11992#line 11993 "parse.c"
11996#line 3307 "parse.y"
11999 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
12000 (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));
12004#line 12005 "parse.c"
12008#line 3315 "parse.y"
12011 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
12012 (yyval.node) = new_const_op_assign(p, NEW_COLON3((yyvsp[-3].
id), &loc), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12016#line 12017 "parse.c"
12020#line 3323 "parse.y"
12023 rb_backref_error(p, (yyvsp[-3].node));
12024 (yyval.node) = NEW_ERROR(&(yyloc));
12028#line 12029 "parse.c"
12032#line 3331 "parse.y"
12035 value_expr((yyvsp[-2].node));
12036 value_expr((yyvsp[0].node));
12037 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12041#line 12042 "parse.c"
12045#line 3340 "parse.y"
12048 value_expr((yyvsp[-2].node));
12049 value_expr((yyvsp[0].node));
12050 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12054#line 12055 "parse.c"
12058#line 3349 "parse.y"
12061 value_expr((yyvsp[-1].node));
12062 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
12066#line 12067 "parse.c"
12070#line 3357 "parse.y"
12073 value_expr((yyvsp[-1].node));
12074 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
12078#line 12079 "parse.c"
12082#line 3365 "parse.y"
12085 value_expr((yyvsp[0].node));
12086 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
12090#line 12091 "parse.c"
12094#line 3373 "parse.y"
12097 value_expr((yyvsp[0].node));
12098 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
12102#line 12103 "parse.c"
12106#line 3381 "parse.y"
12108 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12110#line 12111 "parse.c"
12114#line 3385 "parse.y"
12116 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12118#line 12119 "parse.c"
12122#line 3389 "parse.y"
12124 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12126#line 12127 "parse.c"
12130#line 3393 "parse.y"
12132 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12134#line 12135 "parse.c"
12138#line 3397 "parse.y"
12140 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12142#line 12143 "parse.c"
12146#line 3401 "parse.y"
12148 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12150#line 12151 "parse.c"
12154#line 3405 "parse.y"
12156 (yyval.node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)), idUMinus, &(yylsp[-3]), &(yyloc));
12158#line 12159 "parse.c"
12162#line 3409 "parse.y"
12164 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUPlus, &(yylsp[-1]), &(yyloc));
12166#line 12167 "parse.c"
12170#line 3413 "parse.y"
12172 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUMinus, &(yylsp[-1]), &(yyloc));
12174#line 12175 "parse.c"
12178#line 3417 "parse.y"
12180 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12182#line 12183 "parse.c"
12186#line 3421 "parse.y"
12188 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12190#line 12191 "parse.c"
12194#line 3425 "parse.y"
12196 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12198#line 12199 "parse.c"
12202#line 3429 "parse.y"
12204 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12206#line 12207 "parse.c"
12210#line 3434 "parse.y"
12212 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12214#line 12215 "parse.c"
12218#line 3438 "parse.y"
12220 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12222#line 12223 "parse.c"
12226#line 3442 "parse.y"
12228 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12230#line 12231 "parse.c"
12234#line 3446 "parse.y"
12236 (yyval.node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12238#line 12239 "parse.c"
12242#line 3450 "parse.y"
12244 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12246#line 12247 "parse.c"
12250#line 3454 "parse.y"
12252 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
12254#line 12255 "parse.c"
12258#line 3458 "parse.y"
12260 (yyval.node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
12262#line 12263 "parse.c"
12266#line 3462 "parse.y"
12268 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12270#line 12271 "parse.c"
12274#line 3466 "parse.y"
12276 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12278#line 12279 "parse.c"
12282#line 3470 "parse.y"
12284 (yyval.node) = logop(p, idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12286#line 12287 "parse.c"
12290#line 3474 "parse.y"
12292 (yyval.node) = logop(p, idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12294#line 12295 "parse.c"
12298#line 3478 "parse.y"
12300 p->ctxt.in_defined = (yyvsp[-1].ctxt).in_defined;
12301 (yyval.node) = new_defined(p, (yyvsp[0].node), &(yyloc));
12303#line 12304 "parse.c"
12307#line 3483 "parse.y"
12310 value_expr((yyvsp[-5].node));
12311 (yyval.node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
12312 fixpos((yyval.node), (yyvsp[-5].node));
12316#line 12317 "parse.c"
12320#line 3492 "parse.y"
12322 endless_method_name(p, get_id((yyvsp[-3].node_def_temp)->nd_mid), &(yylsp[-3]));
12323 restore_defun(p, (yyvsp[-3].node_def_temp));
12325 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), &(yyloc));
12326 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12327 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
12333#line 12334 "parse.c"
12337#line 3505 "parse.y"
12339 endless_method_name(p, get_id((yyvsp[-3].node_def_temp)->nd_mid), &(yylsp[-3]));
12340 restore_defun(p, (yyvsp[-3].node_def_temp));
12342 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), &(yyloc));
12343 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12344 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
12350#line 12351 "parse.c"
12354#line 3518 "parse.y"
12356 (yyval.node) = (yyvsp[0].node);
12358#line 12359 "parse.c"
12362#line 3525 "parse.y"
12364 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12366 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
12370#line 12371 "parse.c"
12374#line 3533 "parse.y"
12376 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12378#line 12379 "parse.c"
12382#line 3538 "parse.y"
12383 {(yyval.id) =
'>';}
12384#line 12385 "parse.c"
12388#line 3539 "parse.y"
12389 {(yyval.id) =
'<';}
12390#line 12391 "parse.c"
12394#line 3540 "parse.y"
12395 {(yyval.id) = idGE;}
12396#line 12397 "parse.c"
12400#line 3541 "parse.y"
12401 {(yyval.id) = idLE;}
12402#line 12403 "parse.c"
12406#line 3545 "parse.y"
12408 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12410#line 12411 "parse.c"
12414#line 3549 "parse.y"
12416 rb_warning1(
"comparison '%s' after comparison", WARN_ID((yyvsp[-1].
id)));
12417 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12419#line 12420 "parse.c"
12423#line 3556 "parse.y"
12425 (yyval.ctxt) = p->ctxt;
12427#line 12428 "parse.c"
12431#line 3562 "parse.y"
12433 p->ctxt.in_defined = 1;
12434 (yyval.ctxt) = (yyvsp[0].ctxt);
12436#line 12437 "parse.c"
12440#line 3569 "parse.y"
12442 p->ctxt.in_rescue = after_rescue;
12443 (yyval.ctxt) = (yyvsp[0].ctxt);
12445#line 12446 "parse.c"
12449#line 3576 "parse.y"
12451 value_expr((yyvsp[0].node));
12452 (yyval.node) = (yyvsp[0].node);
12454#line 12455 "parse.c"
12458#line 3584 "parse.y"
12460 (yyval.node) = (yyvsp[-1].node);
12462#line 12463 "parse.c"
12466#line 3588 "parse.y"
12469 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
12473#line 12474 "parse.c"
12477#line 3595 "parse.y"
12480 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
12484#line 12485 "parse.c"
12488#line 3604 "parse.y"
12490 value_expr((yyvsp[0].node));
12491 (yyval.node) = (yyvsp[0].node);
12493#line 12494 "parse.c"
12497#line 3609 "parse.y"
12499 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12501 value_expr((yyvsp[-3].node));
12502 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
12506#line 12507 "parse.c"
12510#line 3620 "parse.y"
12513 (yyval.node) = (yyvsp[-1].node);
12517#line 12518 "parse.c"
12521#line 3627 "parse.y"
12523 if (!check_forwarding_args(p)) {
12524 (yyval.node) = Qnone;
12528 (yyval.node) = new_args_forward_call(p, (yyvsp[-3].node), &(yylsp[-1]), &(yyloc));
12533#line 12534 "parse.c"
12537#line 3639 "parse.y"
12539 if (!check_forwarding_args(p)) {
12540 (yyval.node) = Qnone;
12544 (yyval.node) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
12549#line 12550 "parse.c"
12553#line 3659 "parse.y"
12555 (yyval.node) = (yyvsp[-1].node);
12557#line 12558 "parse.c"
12561#line 3663 "parse.y"
12564 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
12568#line 12569 "parse.c"
12572#line 3670 "parse.y"
12575 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
12579#line 12580 "parse.c"
12583#line 3679 "parse.y"
12586 value_expr((yyvsp[0].node));
12587 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
12591#line 12592 "parse.c"
12595#line 3687 "parse.y"
12598 (yyval.node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node_block_pass));
12602#line 12603 "parse.c"
12606#line 3694 "parse.y"
12609 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
12610 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
12614#line 12615 "parse.c"
12618#line 3702 "parse.y"
12621 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
12622 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
12626#line 12627 "parse.c"
12630#line 3713 "parse.y"
12641 case '(':
case tLPAREN:
case tLPAREN_ARG:
case '[':
case tLBRACK:
12644 if (lookahead) CMDARG_POP();
12646 if (lookahead) CMDARG_PUSH(0);
12648#line 12649 "parse.c"
12652#line 3731 "parse.y"
12665 if (lookahead) CMDARG_POP();
12667 if (lookahead) CMDARG_PUSH(0);
12668 (yyval.node) = (yyvsp[0].node);
12670#line 12671 "parse.c"
12674#line 3751 "parse.y"
12677 (yyval.node_block_pass) = NEW_BLOCK_PASS((yyvsp[0].node), &(yyloc));
12681#line 12682 "parse.c"
12685#line 3758 "parse.y"
12687 forwarding_arg_check(p, idFWD_BLOCK, 0,
"block");
12689 (yyval.node_block_pass) = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, &(yylsp[0])), &(yyloc));
12693#line 12694 "parse.c"
12697#line 3768 "parse.y"
12699 (yyval.node_block_pass) = (yyvsp[0].node_block_pass);
12701#line 12702 "parse.c"
12705#line 3772 "parse.y"
12707 (yyval.node_block_pass) = 0;
12709#line 12710 "parse.c"
12713#line 3779 "parse.y"
12716 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
12720#line 12721 "parse.c"
12724#line 3786 "parse.y"
12727 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc));
12731#line 12732 "parse.c"
12735#line 3793 "parse.y"
12738 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12742#line 12743 "parse.c"
12746#line 3800 "parse.y"
12749 (yyval.node) = rest_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12753#line 12754 "parse.c"
12757#line 3810 "parse.y"
12759 (yyval.node) = (yyvsp[0].node);
12761#line 12762 "parse.c"
12765#line 3814 "parse.y"
12767 forwarding_arg_check(p, idFWD_REST, idFWD_ALL,
"rest");
12769 (yyval.node) = NEW_LVAR(idFWD_REST, &(yylsp[0]));
12773#line 12774 "parse.c"
12777#line 3830 "parse.y"
12780 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12784#line 12785 "parse.c"
12788#line 3837 "parse.y"
12791 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
12795#line 12796 "parse.c"
12799#line 3844 "parse.y"
12802 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc));
12806#line 12807 "parse.c"
12810#line 3863 "parse.y"
12813 (yyval.node) = (
NODE *)NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
12817#line 12818 "parse.c"
12821#line 3870 "parse.y"
12825#line 12826 "parse.c"
12829#line 3875 "parse.y"
12833 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
12834 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
12835 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
12839#line 12840 "parse.c"
12843#line 3884 "parse.y"
12844 {SET_LEX_STATE(EXPR_ENDARG);}
12845#line 12846 "parse.c"
12849#line 3885 "parse.y"
12852 if (nd_type_p((yyvsp[-2].node), NODE_SELF)) RNODE_SELF((yyvsp[-2].node))->nd_state = 0;
12853 (yyval.node) = (yyvsp[-2].node);
12857#line 12858 "parse.c"
12861#line 3893 "parse.y"
12864 if (nd_type_p((yyvsp[-1].node), NODE_SELF)) RNODE_SELF((yyvsp[-1].node))->nd_state = 0;
12865 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
12869#line 12870 "parse.c"
12873#line 3901 "parse.y"
12876 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
12880#line 12881 "parse.c"
12884#line 3908 "parse.y"
12887 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
12891#line 12892 "parse.c"
12895#line 3915 "parse.y"
12898 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
12902#line 12903 "parse.c"
12906#line 3922 "parse.y"
12909 (yyval.node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
12910 RNODE_HASH((yyval.node))->nd_brace = TRUE;
12914#line 12915 "parse.c"
12918#line 3930 "parse.y"
12921 (yyval.node) = NEW_RETURN(0, &(yyloc));
12925#line 12926 "parse.c"
12929#line 3937 "parse.y"
12932 (yyval.node) = new_yield(p, (yyvsp[-1].node), &(yyloc));
12936#line 12937 "parse.c"
12940#line 3944 "parse.y"
12943 (yyval.node) = NEW_YIELD(0, &(yyloc));
12947#line 12948 "parse.c"
12951#line 3951 "parse.y"
12954 (yyval.node) = NEW_YIELD(0, &(yyloc));
12958#line 12959 "parse.c"
12962#line 3958 "parse.y"
12964 p->ctxt.in_defined = (yyvsp[-2].ctxt).in_defined;
12965 (yyval.node) = new_defined(p, (yyvsp[-1].node), &(yyloc));
12967#line 12968 "parse.c"
12971#line 3963 "parse.y"
12973 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])), METHOD_NOT, &(yylsp[-3]), &(yyloc));
12975#line 12976 "parse.c"
12979#line 3967 "parse.y"
12981 (yyval.node) = call_uni_op(p, method_cond(p, new_nil(&(yylsp[-1])), &(yylsp[-1])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12983#line 12984 "parse.c"
12987#line 3971 "parse.y"
12990 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-1].node_fcall), (yyvsp[0].node), &(yyloc));
12994#line 12995 "parse.c"
12998#line 3979 "parse.y"
13001 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
13002 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13006#line 13007 "parse.c"
13010#line 3991 "parse.y"
13013 (yyval.node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
13014 fixpos((yyval.node), (yyvsp[-4].node));
13018#line 13019 "parse.c"
13022#line 4002 "parse.y"
13025 (yyval.node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
13026 fixpos((yyval.node), (yyvsp[-4].node));
13030#line 13031 "parse.c"
13034#line 4012 "parse.y"
13036 restore_block_exit(p, (yyvsp[-3].node_exits));
13038 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc));
13039 fixpos((yyval.node), (yyvsp[-2].node));
13043#line 13044 "parse.c"
13047#line 4023 "parse.y"
13049 restore_block_exit(p, (yyvsp[-3].node_exits));
13051 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc));
13052 fixpos((yyval.node), (yyvsp[-2].node));
13056#line 13057 "parse.c"
13060#line 4032 "parse.y"
13062 (yyval.val) = p->case_labels;
13063 p->case_labels =
Qnil;
13065#line 13066 "parse.c"
13069#line 4038 "parse.y"
13071 if (
RTEST(p->case_labels)) rb_hash_clear(p->case_labels);
13072 p->case_labels = (yyvsp[-2].val);
13074 (yyval.node) = NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
13075 fixpos((yyval.node), (yyvsp[-4].node));
13079#line 13080 "parse.c"
13083#line 4048 "parse.y"
13085 (yyval.val) = p->case_labels;
13086 p->case_labels = 0;
13088#line 13089 "parse.c"
13092#line 4054 "parse.y"
13094 if (
RTEST(p->case_labels)) rb_hash_clear(p->case_labels);
13095 p->case_labels = (yyvsp[-2].val);
13097 (yyval.node) = NEW_CASE2((yyvsp[-1].node), &(yyloc));
13101#line 13102 "parse.c"
13105#line 4065 "parse.y"
13108 (yyval.node) = NEW_CASE3((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13112#line 13113 "parse.c"
13116#line 4074 "parse.y"
13118 restore_block_exit(p, (yyvsp[-5].node_exits));
13129 ID id = internal_id(p);
13132 NODE *scope, *internal_var = NEW_DVAR(
id, &(yylsp[-4]));
13136 switch (nd_type((yyvsp[-4].node))) {
13139 set_nd_value(p, (yyvsp[-4].node), internal_var);
13142 m->nd_next = (yyvsp[-4].node);
13145 m->nd_next = node_assign(p, (yyvsp[-4].node), NEW_FOR_MASGN(internal_var, &(yylsp[-4])), NO_LEX_CTXT, &(yylsp[-4]));
13148 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]));
13151 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
13152 scope = NEW_SCOPE2(tbl, args, (yyvsp[-1].node), &(yyloc));
13153 (yyval.node) = NEW_FOR((yyvsp[-2].node), scope, &(yyloc));
13154 fixpos((yyval.node), (yyvsp[-4].node));
13158#line 13159 "parse.c"
13162#line 4116 "parse.y"
13164 begin_definition(
"class", &(yylsp[-2]), &(yylsp[-1]));
13166#line 13167 "parse.c"
13170#line 4121 "parse.y"
13173 (yyval.node) = NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc));
13174 nd_set_line(RNODE_CLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
13175 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
13176 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
13180 p->ctxt.in_class = (yyvsp[-5].ctxt).in_class;
13181 p->ctxt.shareable_constant_value = (yyvsp[-5].ctxt).shareable_constant_value;
13183#line 13184 "parse.c"
13187#line 4134 "parse.y"
13189 begin_definition(
"", &(yylsp[-2]), &(yylsp[-1]));
13191#line 13192 "parse.c"
13195#line 4140 "parse.y"
13198 (yyval.node) = NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
13199 nd_set_line(RNODE_SCLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
13200 set_line_body((yyvsp[-1].node), nd_line((yyvsp[-4].node)));
13201 fixpos((yyval.node), (yyvsp[-4].node));
13205 p->ctxt.in_def = (yyvsp[-6].ctxt).in_def;
13206 p->ctxt.in_class = (yyvsp[-6].ctxt).in_class;
13207 p->ctxt.shareable_constant_value = (yyvsp[-6].ctxt).shareable_constant_value;
13209#line 13210 "parse.c"
13213#line 4154 "parse.y"
13215 begin_definition(
"module", &(yylsp[-1]), &(yylsp[0]));
13217#line 13218 "parse.c"
13221#line 4159 "parse.y"
13224 (yyval.node) = NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13225 nd_set_line(RNODE_MODULE((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
13226 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
13227 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
13231 p->ctxt.in_class = (yyvsp[-4].ctxt).in_class;
13232 p->ctxt.shareable_constant_value = (yyvsp[-4].ctxt).shareable_constant_value;
13234#line 13235 "parse.c"
13238#line 4173 "parse.y"
13241 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
13244#line 13245 "parse.c"
13248#line 4180 "parse.y"
13250 restore_defun(p, (yyvsp[-4].node_def_temp));
13252 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), &(yyloc));
13253 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
13254 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[-1].node);
13259#line 13260 "parse.c"
13263#line 4192 "parse.y"
13266 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
13269#line 13270 "parse.c"
13273#line 4199 "parse.y"
13275 restore_defun(p, (yyvsp[-4].node_def_temp));
13277 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), &(yyloc));
13278 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
13279 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[-1].node);
13284#line 13285 "parse.c"
13288#line 4210 "parse.y"
13290 (yyval.node) = add_block_exit(p, NEW_BREAK(0, &(yyloc)));
13293#line 13294 "parse.c"
13297#line 4215 "parse.y"
13299 (yyval.node) = add_block_exit(p, NEW_NEXT(0, &(yyloc)));
13302#line 13303 "parse.c"
13306#line 4220 "parse.y"
13308 (yyval.node) = add_block_exit(p, NEW_REDO(&(yyloc)));
13311#line 13312 "parse.c"
13315#line 4225 "parse.y"
13317 if (!p->ctxt.in_defined) {
13318 switch (p->ctxt.in_rescue) {
13319 case before_rescue: yyerror1(&(yylsp[0]),
"Invalid retry without rescue");
break;
13320 case after_rescue:
break;
13321 case after_else: yyerror1(&(yylsp[0]),
"Invalid retry after else");
break;
13322 case after_ensure: yyerror1(&(yylsp[0]),
"Invalid retry after ensure");
break;
13326 (yyval.node) = NEW_RETRY(&(yyloc));
13330#line 13331 "parse.c"
13334#line 4242 "parse.y"
13336 value_expr((yyvsp[0].node));
13337 (yyval.node) = (yyvsp[0].node);
13339#line 13340 "parse.c"
13343#line 4249 "parse.y"
13345 token_info_push(p,
"begin", &(yyloc));
13347 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13350#line 13351 "parse.c"
13354#line 4258 "parse.y"
13357 token_info_push(p,
"if", &(yyloc));
13358 if (p->token_info && p->token_info->nonspc &&
13359 p->token_info->next && !strcmp(p->token_info->next->token,
"else")) {
13361 const char *beg = p->lex.pbeg + p->token_info->next->beg.column;
13363 while (beg < tok &&
ISSPACE(*beg)) beg++;
13365 p->token_info->nonspc = 0;
13369 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13372#line 13373 "parse.c"
13376#line 4278 "parse.y"
13378 token_info_push(p,
"unless", &(yyloc));
13380 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13383#line 13384 "parse.c"
13387#line 4287 "parse.y"
13389 (yyval.node_exits) = (yyvsp[0].node_exits);
13390 token_info_push(p,
"while", &(yyloc));
13392 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
13395#line 13396 "parse.c"
13399#line 4297 "parse.y"
13401 (yyval.node_exits) = (yyvsp[0].node_exits);
13402 token_info_push(p,
"until", &(yyloc));
13404 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
13407#line 13408 "parse.c"
13411#line 4307 "parse.y"
13413 token_info_push(p,
"case", &(yyloc));
13415 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13418#line 13419 "parse.c"
13422#line 4316 "parse.y"
13424 (yyval.node_exits) = (yyvsp[0].node_exits);
13425 token_info_push(p,
"for", &(yyloc));
13427 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
13430#line 13431 "parse.c"
13434#line 4326 "parse.y"
13436 token_info_push(p,
"class", &(yyloc));
13437 (yyval.ctxt) = p->ctxt;
13438 p->ctxt.in_rescue = before_rescue;
13440 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13443#line 13444 "parse.c"
13447#line 4337 "parse.y"
13449 token_info_push(p,
"module", &(yyloc));
13450 (yyval.ctxt) = p->ctxt;
13451 p->ctxt.in_rescue = before_rescue;
13453 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13456#line 13457 "parse.c"
13460#line 4348 "parse.y"
13462 token_info_push(p,
"def", &(yyloc));
13463 (yyval.node_def_temp) = NEW_DEF_TEMP(&(yyloc));
13464 p->ctxt.in_argdef = 1;
13466#line 13467 "parse.c"
13470#line 4356 "parse.y"
13472 token_info_push(p,
"do", &(yyloc));
13474 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13477#line 13478 "parse.c"
13481#line 4365 "parse.y"
13483 token_info_push(p,
"do", &(yyloc));
13485 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13488#line 13489 "parse.c"
13492#line 4374 "parse.y"
13494 token_info_warn(p,
"rescue", p->token_info, 1, &(yyloc));
13495 (yyval.ctxt) = p->ctxt;
13496 p->ctxt.in_rescue = after_rescue;
13498#line 13499 "parse.c"
13502#line 4382 "parse.y"
13504 token_info_warn(p,
"ensure", p->token_info, 1, &(yyloc));
13505 (yyval.ctxt) = p->ctxt;
13507#line 13508 "parse.c"
13511#line 4389 "parse.y"
13513 token_info_warn(p,
"when", p->token_info, 0, &(yyloc));
13515#line 13516 "parse.c"
13519#line 4395 "parse.y"
13522 int same = ptinfo_beg && strcmp(ptinfo_beg->token,
"case") != 0;
13523 token_info_warn(p,
"else", p->token_info, same, &(yyloc));
13526 e.next = ptinfo_beg->next;
13528 token_info_setup(&e, p->lex.pbeg, &(yyloc));
13529 if (!e.nonspc) *ptinfo_beg = e;
13532#line 13533 "parse.c"
13536#line 4410 "parse.y"
13539 token_info_warn(p,
"elsif", p->token_info, 1, &(yyloc));
13541#line 13542 "parse.c"
13545#line 4417 "parse.y"
13547 token_info_pop(p,
"end", &(yyloc));
13549 pop_end_expect_token_locations(p);
13552#line 13553 "parse.c"
13556#line 4424 "parse.y"
13558 compile_error(p,
"syntax error, unexpected end-of-input");
13560#line 13561 "parse.c"
13564#line 4430 "parse.y"
13566 if (p->ctxt.in_class && !p->ctxt.in_def && !dyna_in_block(p))
13567 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
13569#line 13570 "parse.c"
13573#line 4437 "parse.y"
13575 if (!p->ctxt.in_defined && !p->ctxt.in_def && !compile_for_eval)
13576 yyerror1(&(yylsp[0]),
"Invalid yield");
13578#line 13579 "parse.c"
13582#line 4456 "parse.y"
13585 (yyval.node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13586 fixpos((yyval.node), (yyvsp[-3].node));
13590#line 13591 "parse.c"
13594#line 4467 "parse.y"
13597 (yyval.node) = (yyvsp[0].node);
13601#line 13602 "parse.c"
13605#line 4480 "parse.y"
13608 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13609 mark_lvar_used(p, (yyval.node));
13613#line 13614 "parse.c"
13617#line 4488 "parse.y"
13620 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
13624#line 13625 "parse.c"
13628#line 4497 "parse.y"
13631 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
13635#line 13636 "parse.c"
13639#line 4504 "parse.y"
13642 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
13646#line 13647 "parse.c"
13650#line 4513 "parse.y"
13653 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
13657#line 13658 "parse.c"
13661#line 4520 "parse.y"
13664 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
13668#line 13669 "parse.c"
13672#line 4527 "parse.y"
13675 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
13679#line 13680 "parse.c"
13683#line 4534 "parse.y"
13686 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
13690#line 13691 "parse.c"
13694#line 4541 "parse.y"
13697 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
13701#line 13702 "parse.c"
13705#line 4550 "parse.y"
13708 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13709 mark_lvar_used(p, (yyval.node));
13713#line 13714 "parse.c"
13717#line 4558 "parse.y"
13720 (yyval.node) = NODE_SPECIAL_NO_NAME_REST;
13724#line 13725 "parse.c"
13728#line 4567 "parse.y"
13729 {(yyval.id) = ID2VAL(idNil);}
13730#line 13731 "parse.c"
13734#line 4570 "parse.y"
13735 {p->ctxt.in_argdef = 0;}
13736#line 13737 "parse.c"
13740#line 4573 "parse.y"
13742 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
13744#line 13745 "parse.c"
13748#line 4577 "parse.y"
13750 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), Qnone, (yyvsp[0].id), &(yylsp[-1]));
13752#line 13753 "parse.c"
13756#line 4581 "parse.y"
13758 (yyval.node_args) = new_args_tail(p, Qnone, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
13760#line 13761 "parse.c"
13764#line 4585 "parse.y"
13766 (yyval.node_args) = new_args_tail(p, Qnone, Qnone, (yyvsp[0].
id), &(yylsp[0]));
13768#line 13769 "parse.c"
13772#line 4591 "parse.y"
13774 (yyval.node_args) = (yyvsp[0].node_args);
13776#line 13777 "parse.c"
13780#line 4595 "parse.y"
13782 (yyval.node_args) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
13784#line 13785 "parse.c"
13788#line 4601 "parse.y"
13792 (yyval.id) = NODE_SPECIAL_EXCESSIVE_COMMA;
13796#line 13797 "parse.c"
13800#line 4611 "parse.y"
13802 (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));
13804#line 13805 "parse.c"
13808#line 4615 "parse.y"
13810 (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));
13812#line 13813 "parse.c"
13816#line 4619 "parse.y"
13818 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), Qnone, Qnone, (yyvsp[0].node_args), &(yyloc));
13820#line 13821 "parse.c"
13824#line 4623 "parse.y"
13826 (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));
13828#line 13829 "parse.c"
13832#line 4627 "parse.y"
13834 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), Qnone, (yyvsp[-1].id), Qnone, (yyvsp[0].node_args), &(yyloc));
13836#line 13837 "parse.c"
13840#line 4631 "parse.y"
13842 (yyval.node_args) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
13843 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), Qnone, (yyvsp[0].id), Qnone, (yyval.node_args), &(yyloc));
13845#line 13846 "parse.c"
13849#line 4636 "parse.y"
13851 (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));
13853#line 13854 "parse.c"
13857#line 4640 "parse.y"
13859 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), Qnone, Qnone, Qnone, (yyvsp[0].node_args), &(yyloc));
13861#line 13862 "parse.c"
13865#line 4644 "parse.y"
13867 (yyval.node_args) = new_args(p, Qnone, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), Qnone, (yyvsp[0].node_args), &(yyloc));
13869#line 13870 "parse.c"
13873#line 4648 "parse.y"
13875 (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));
13877#line 13878 "parse.c"
13881#line 4652 "parse.y"
13883 (yyval.node_args) = new_args(p, Qnone, (yyvsp[-1].node_opt_arg), Qnone, Qnone, (yyvsp[0].node_args), &(yyloc));
13885#line 13886 "parse.c"
13889#line 4656 "parse.y"
13891 (yyval.node_args) = new_args(p, Qnone, (yyvsp[-3].node_opt_arg), Qnone, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
13893#line 13894 "parse.c"
13897#line 4660 "parse.y"
13899 (yyval.node_args) = new_args(p, Qnone, Qnone, (yyvsp[-1].
id), Qnone, (yyvsp[0].node_args), &(yyloc));
13901#line 13902 "parse.c"
13905#line 4664 "parse.y"
13907 (yyval.node_args) = new_args(p, Qnone, Qnone, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
13909#line 13910 "parse.c"
13913#line 4668 "parse.y"
13915 (yyval.node_args) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyvsp[0].node_args), &(yyloc));
13917#line 13918 "parse.c"
13921#line 4675 "parse.y"
13923 p->command_start = TRUE;
13925#line 13926 "parse.c"
13929#line 4681 "parse.y"
13932 p->max_numparam = ORDINAL_PARAM;
13933 p->ctxt.in_argdef = 0;
13935 (yyval.node_args) = 0;
13940#line 13941 "parse.c"
13944#line 4692 "parse.y"
13947 p->max_numparam = ORDINAL_PARAM;
13948 p->ctxt.in_argdef = 0;
13950 (yyval.node_args) = (yyvsp[-2].node_args);
13954#line 13955 "parse.c"
13958#line 4705 "parse.y"
13962#line 13963 "parse.c"
13966#line 4709 "parse.y"
13973#line 13974 "parse.c"
13977#line 4724 "parse.y"
13979 new_bv(p, get_id((yyvsp[0].
id)));
13982#line 13983 "parse.c"
13986#line 4729 "parse.y"
13990#line 13991 "parse.c"
13994#line 4734 "parse.y"
13996 (yyval.num) = p->max_numparam;
13997 p->max_numparam = 0;
13999#line 14000 "parse.c"
14003#line 4740 "parse.y"
14005 (yyval.node) = numparam_push(p);
14007#line 14008 "parse.c"
14011#line 4746 "parse.y"
14013 token_info_push(p,
"->", &(yylsp[0]));
14014 (yyvsp[0].vars) = dyna_push(p);
14015 (yyval.num) = p->lex.lpar_beg;
14016 p->lex.lpar_beg = p->lex.paren_nest;
14018#line 14019 "parse.c"
14022#line 4754 "parse.y"
14026#line 14027 "parse.c"
14030#line 4758 "parse.y"
14032 int max_numparam = p->max_numparam;
14033 p->lex.lpar_beg = (yyvsp[-6].num);
14034 p->max_numparam = (yyvsp[-5].num);
14035 restore_block_exit(p, (yyvsp[-3].node_exits));
14037 (yyvsp[-2].node_args) = args_with_numbered(p, (yyvsp[-2].node_args), max_numparam);
14040 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
14041 (yyval.node) = NEW_LAMBDA((yyvsp[-2].node_args), (yyvsp[0].node), &loc);
14042 nd_set_line(RNODE_LAMBDA((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14043 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
14044 nd_set_first_loc((yyval.node), (yylsp[-7]).beg_pos);
14048 numparam_pop(p, (yyvsp[-4].node));
14049 dyna_pop(p, (yyvsp[-7].vars));
14051#line 14052 "parse.c"
14055#line 4781 "parse.y"
14057 p->ctxt.in_argdef = 0;
14059 (yyval.node_args) = (yyvsp[-2].node_args);
14060 p->max_numparam = ORDINAL_PARAM;
14064#line 14065 "parse.c"
14068#line 4790 "parse.y"
14070 p->ctxt.in_argdef = 0;
14072 if (!args_info_empty_p(&(yyvsp[0].node_args)->nd_ainfo))
14073 p->max_numparam = ORDINAL_PARAM;
14075 (yyval.node_args) = (yyvsp[0].node_args);
14077#line 14078 "parse.c"
14081#line 4801 "parse.y"
14083 token_info_pop(p,
"}", &(yylsp[0]));
14084 (yyval.node) = (yyvsp[-1].node);
14086#line 14087 "parse.c"
14090#line 4806 "parse.y"
14093 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14096#line 14097 "parse.c"
14100#line 4812 "parse.y"
14102 (yyval.node) = (yyvsp[-1].node);
14104#line 14105 "parse.c"
14108#line 4818 "parse.y"
14110 (yyval.node) = (yyvsp[-1].node);
14112 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
14115#line 14116 "parse.c"
14119#line 4827 "parse.y"
14122 if (nd_type_p((yyvsp[-1].node), NODE_YIELD)) {
14123 compile_error(p,
"block given to yield");
14126 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
14128 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14129 fixpos((yyval.node), (yyvsp[-1].node));
14133#line 14134 "parse.c"
14137#line 4841 "parse.y"
14140 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14144#line 14145 "parse.c"
14148#line 4848 "parse.y"
14151 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
14155#line 14156 "parse.c"
14159#line 4855 "parse.y"
14162 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
14166#line 14167 "parse.c"
14170#line 4864 "parse.y"
14173 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
14174 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
14175 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
14179#line 14180 "parse.c"
14183#line 4873 "parse.y"
14186 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14187 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
14191#line 14192 "parse.c"
14195#line 4881 "parse.y"
14198 (yyval.node) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14199 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
14203#line 14204 "parse.c"
14207#line 4889 "parse.y"
14210 (yyval.node) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-2].node), (yyvsp[0].
id), Qnull, &(yylsp[0]), &(yyloc));
14214#line 14215 "parse.c"
14218#line 4896 "parse.y"
14221 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), ID2VAL(idCall), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14222 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
14226#line 14227 "parse.c"
14230#line 4904 "parse.y"
14233 (yyval.node) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-2].node), ID2VAL(idCall), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14234 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
14238#line 14239 "parse.c"
14242#line 4912 "parse.y"
14245 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc));
14249#line 14250 "parse.c"
14253#line 4919 "parse.y"
14256 (yyval.node) = NEW_ZSUPER(&(yyloc));
14260#line 14261 "parse.c"
14264#line 4926 "parse.y"
14267 (yyval.node) = NEW_CALL((yyvsp[-3].node), tAREF, (yyvsp[-1].node), &(yyloc));
14268 fixpos((yyval.node), (yyvsp[-3].node));
14272#line 14273 "parse.c"
14276#line 4936 "parse.y"
14278 (yyval.node) = (yyvsp[-1].node);
14280 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
14283#line 14284 "parse.c"
14287#line 4943 "parse.y"
14289 (yyval.node) = (yyvsp[-1].node);
14291 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
14294#line 14295 "parse.c"
14298#line 4951 "parse.y"
14299 {(yyval.vars) = dyna_push(p);}
14300#line 14301 "parse.c"
14304#line 4954 "parse.y"
14306 int max_numparam = p->max_numparam;
14307 p->max_numparam = (yyvsp[-4].num);
14308 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam);
14310 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
14313 restore_block_exit(p, (yyvsp[-2].node_exits));
14314 numparam_pop(p, (yyvsp[-3].node));
14315 dyna_pop(p, (yyvsp[-5].vars));
14317#line 14318 "parse.c"
14321#line 4968 "parse.y"
14323 (yyval.vars) = dyna_push(p);
14326#line 14327 "parse.c"
14330#line 4974 "parse.y"
14332 int max_numparam = p->max_numparam;
14333 p->max_numparam = (yyvsp[-4].num);
14334 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam);
14336 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
14340 restore_block_exit(p, (yyvsp[-2].node_exits));
14341 numparam_pop(p, (yyvsp[-3].node));
14342 dyna_pop(p, (yyvsp[-5].vars));
14344#line 14345 "parse.c"
14348#line 4990 "parse.y"
14351 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
14352 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14356#line 14357 "parse.c"
14360#line 4998 "parse.y"
14363 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc));
14367#line 14368 "parse.c"
14371#line 5005 "parse.y"
14374 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
14375 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14379#line 14380 "parse.c"
14383#line 5013 "parse.y"
14386 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
14390#line 14391 "parse.c"
14394#line 5024 "parse.y"
14397 (yyval.node) = NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14398 fixpos((yyval.node), (yyvsp[-3].node));
14402#line 14403 "parse.c"
14406#line 5037 "parse.y"
14407 {(yyval.tbl) = p->pvtbl; p->pvtbl = st_init_numtable();}
14408#line 14409 "parse.c"
14412#line 5038 "parse.y"
14413 {(yyval.tbl) = p->pktbl; p->pktbl = 0;}
14414#line 14415 "parse.c"
14418#line 5040 "parse.y"
14420 (yyval.ctxt) = p->ctxt;
14421 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
14422 p->command_start = FALSE;
14423 p->ctxt.in_kwarg = 1;
14425#line 14426 "parse.c"
14429#line 5051 "parse.y"
14431 pop_pktbl(p, (yyvsp[-2].tbl));
14432 pop_pvtbl(p, (yyvsp[-3].tbl));
14433 p->ctxt.in_kwarg = (yyvsp[-4].ctxt).in_kwarg;
14435#line 14436 "parse.c"
14439#line 5058 "parse.y"
14442 (yyval.node) = NEW_IN((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14446#line 14447 "parse.c"
14450#line 5072 "parse.y"
14453 (yyval.node) = new_if(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc));
14454 fixpos((yyval.node), (yyvsp[0].node));
14458#line 14459 "parse.c"
14462#line 5080 "parse.y"
14465 (yyval.node) = new_unless(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc));
14466 fixpos((yyval.node), (yyvsp[0].node));
14470#line 14471 "parse.c"
14474#line 5091 "parse.y"
14476 (yyval.node) = new_array_pattern_tail(p, Qnone, 1, Qnone, Qnone, &(yyloc));
14477 (yyval.node) = new_array_pattern(p, Qnone, get_value((yyvsp[-1].node)), (yyval.node), &(yyloc));
14479#line 14480 "parse.c"
14483#line 5096 "parse.y"
14485 (yyval.node) = new_array_pattern(p, Qnone, get_value((yyvsp[-2].node)), (yyvsp[0].node), &(yyloc));
14487 nd_set_first_loc((yyval.node), (yylsp[-2]).beg_pos);
14491#line 14492 "parse.c"
14495#line 5104 "parse.y"
14497 (yyval.node) = new_find_pattern(p, Qnone, (yyvsp[0].node), &(yyloc));
14499#line 14500 "parse.c"
14503#line 5108 "parse.y"
14505 (yyval.node) = new_array_pattern(p, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
14507#line 14508 "parse.c"
14511#line 5112 "parse.y"
14513 (yyval.node) = new_hash_pattern(p, Qnone, (yyvsp[0].node), &(yyloc));
14515#line 14516 "parse.c"
14519#line 5121 "parse.y"
14522 NODE *n = NEW_LIST((yyvsp[-2].node), &(yyloc));
14523 n = list_append(p, n, (yyvsp[0].node));
14524 (yyval.node) = new_hash(p, n, &(yyloc));
14528#line 14529 "parse.c"
14532#line 5133 "parse.y"
14535 (yyval.node) = NEW_OR((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14539#line 14540 "parse.c"
14543#line 5142 "parse.y"
14544 { (yyval.tbl) = (yyvsp[0].tbl);}
14545#line 14546 "parse.c"
14549#line 5143 "parse.y"
14550 { (yyval.tbl) = (yyvsp[0].tbl);}
14551#line 14552 "parse.c"
14555#line 5148 "parse.y"
14557 pop_pktbl(p, (yyvsp[-2].tbl));
14558 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), Qnone, (yyvsp[-1].node), &(yyloc));
14560 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
14564#line 14565 "parse.c"
14568#line 5157 "parse.y"
14570 pop_pktbl(p, (yyvsp[-2].tbl));
14571 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
14573 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
14577#line 14578 "parse.c"
14581#line 5166 "parse.y"
14583 pop_pktbl(p, (yyvsp[-2].tbl));
14584 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
14586 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
14590#line 14591 "parse.c"
14594#line 5175 "parse.y"
14596 (yyval.node) = new_array_pattern_tail(p, Qnone, 0, Qnone, Qnone, &(yyloc));
14597 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), Qnone, (yyval.node), &(yyloc));
14599#line 14600 "parse.c"
14603#line 5180 "parse.y"
14605 pop_pktbl(p, (yyvsp[-2].tbl));
14606 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), Qnone, (yyvsp[-1].node), &(yyloc));
14608 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
14612#line 14613 "parse.c"
14616#line 5189 "parse.y"
14618 pop_pktbl(p, (yyvsp[-2].tbl));
14619 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
14621 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
14625#line 14626 "parse.c"
14629#line 5198 "parse.y"
14631 pop_pktbl(p, (yyvsp[-2].tbl));
14632 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
14634 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
14638#line 14639 "parse.c"
14642#line 5207 "parse.y"
14644 (yyval.node) = new_array_pattern_tail(p, Qnone, 0, Qnone, Qnone, &(yyloc));
14645 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), Qnone, (yyval.node), &(yyloc));
14647#line 14648 "parse.c"
14651#line 5212 "parse.y"
14653 (yyval.node) = new_array_pattern(p, Qnone, Qnone, (yyvsp[-1].node), &(yyloc));
14655#line 14656 "parse.c"
14659#line 5216 "parse.y"
14661 (yyval.node) = new_find_pattern(p, Qnone, (yyvsp[-1].node), &(yyloc));
14663#line 14664 "parse.c"
14667#line 5220 "parse.y"
14669 (yyval.node) = new_array_pattern_tail(p, Qnone, 0, Qnone, Qnone, &(yyloc));
14670 (yyval.node) = new_array_pattern(p, Qnone, Qnone, (yyval.node), &(yyloc));
14672#line 14673 "parse.c"
14676#line 5225 "parse.y"
14678 p->ctxt.in_kwarg = 0;
14680#line 14681 "parse.c"
14684#line 5229 "parse.y"
14686 pop_pktbl(p, (yyvsp[-4].tbl));
14687 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
14688 (yyval.node) = new_hash_pattern(p, Qnone, (yyvsp[-1].node), &(yyloc));
14690#line 14691 "parse.c"
14694#line 5235 "parse.y"
14696 (yyval.node) = new_hash_pattern_tail(p, Qnone, 0, &(yyloc));
14697 (yyval.node) = new_hash_pattern(p, Qnone, (yyval.node), &(yyloc));
14699#line 14700 "parse.c"
14703#line 5240 "parse.y"
14705 pop_pktbl(p, (yyvsp[-2].tbl));
14706 (yyval.node) = (yyvsp[-1].node);
14708#line 14709 "parse.c"
14712#line 5247 "parse.y"
14715 NODE *pre_args = NEW_LIST((yyvsp[0].node), &(yyloc));
14716 (yyval.node) = new_array_pattern_tail(p, pre_args, 0, Qnone, Qnone, &(yyloc));
14721#line 14722 "parse.c"
14725#line 5256 "parse.y"
14727 (yyval.node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, Qnone, Qnone, &(yyloc));
14729#line 14730 "parse.c"
14733#line 5260 "parse.y"
14736 (yyval.node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, Qnone, Qnone, &(yyloc));
14742#line 14743 "parse.c"
14746#line 5269 "parse.y"
14748 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, (yyvsp[0].node), Qnone, &(yyloc));
14750#line 14751 "parse.c"
14754#line 5273 "parse.y"
14756 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14758#line 14759 "parse.c"
14762#line 5280 "parse.y"
14764 (yyval.node) = (yyvsp[-1].node);
14766#line 14767 "parse.c"
14770#line 5284 "parse.y"
14773 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
14777#line 14778 "parse.c"
14781#line 5293 "parse.y"
14783 (yyval.node) = new_array_pattern_tail(p, Qnone, 1, (yyvsp[0].node), Qnone, &(yyloc));
14785#line 14786 "parse.c"
14789#line 5297 "parse.y"
14791 (yyval.node) = new_array_pattern_tail(p, Qnone, 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14793#line 14794 "parse.c"
14797#line 5303 "parse.y"
14799 (yyval.node) = new_find_pattern_tail(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14801#line 14802 "parse.c"
14805#line 5310 "parse.y"
14808 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
14809 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
14813#line 14814 "parse.c"
14817#line 5318 "parse.y"
14824#line 14825 "parse.c"
14828#line 5328 "parse.y"
14831 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
14835#line 14836 "parse.c"
14839#line 5337 "parse.y"
14842 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14846#line 14847 "parse.c"
14850#line 5346 "parse.y"
14852 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].id), &(yyloc));
14854#line 14855 "parse.c"
14858#line 5350 "parse.y"
14860 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
14862#line 14863 "parse.c"
14866#line 5354 "parse.y"
14868 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
14870#line 14871 "parse.c"
14874#line 5358 "parse.y"
14876 (yyval.node) = new_hash_pattern_tail(p, new_hash(p, Qnone, &(yyloc)), (yyvsp[0].
id), &(yyloc));
14878#line 14879 "parse.c"
14882#line 5366 "parse.y"
14885 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
14889#line 14890 "parse.c"
14893#line 5375 "parse.y"
14895 error_duplicate_pattern_key(p, get_id((yyvsp[-1].
id)), &(yylsp[-1]));
14897 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
14901#line 14902 "parse.c"
14905#line 5383 "parse.y"
14907 error_duplicate_pattern_key(p, get_id((yyvsp[0].
id)), &(yylsp[0]));
14908 if ((yyvsp[0].
id) && !is_local_id(get_id((yyvsp[0].
id)))) {
14909 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
14911 error_duplicate_pattern_variable(p, get_id((yyvsp[0].
id)), &(yylsp[0]));
14913 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
14917#line 14918 "parse.c"
14921#line 5398 "parse.y"
14923 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
14925 if (!(yyvsp[-1].node) || nd_type_p((yyvsp[-1].node), NODE_STR)) {
14926 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
14927 (yyval.id) =
SYM2ID(RNODE_LIT(node)->nd_lit);
14938 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
14942#line 14943 "parse.c"
14946#line 5421 "parse.y"
14948 (yyval.id) = (yyvsp[0].
id);
14950#line 14951 "parse.c"
14954#line 5425 "parse.y"
14958#line 14959 "parse.c"
14962#line 5431 "parse.y"
14966#line 14967 "parse.c"
14970#line 5437 "parse.y"
14971 {(yyval.id) = ID2VAL(idNil);}
14972#line 14973 "parse.c"
14976#line 5442 "parse.y"
14979 value_expr((yyvsp[-2].node));
14980 value_expr((yyvsp[0].node));
14981 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14985#line 14986 "parse.c"
14989#line 5451 "parse.y"
14992 value_expr((yyvsp[-2].node));
14993 value_expr((yyvsp[0].node));
14994 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14998#line 14999 "parse.c"
15002#line 5460 "parse.y"
15005 value_expr((yyvsp[-1].node));
15006 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
15010#line 15011 "parse.c"
15014#line 5468 "parse.y"
15017 value_expr((yyvsp[-1].node));
15018 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
15022#line 15023 "parse.c"
15026#line 5479 "parse.y"
15029 value_expr((yyvsp[0].node));
15030 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
15034#line 15035 "parse.c"
15038#line 5487 "parse.y"
15041 value_expr((yyvsp[0].node));
15042 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
15046#line 15047 "parse.c"
15050#line 5505 "parse.y"
15053 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
15057#line 15058 "parse.c"
15061#line 5515 "parse.y"
15064 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
15065 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15069#line 15070 "parse.c"
15073#line 5525 "parse.y"
15076 NODE *n = gettable(p, (yyvsp[0].
id), &(yyloc));
15077 if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
15078 compile_error(p,
"%"PRIsVALUE
": no such local variable", rb_id2str((yyvsp[0].
id)));
15084#line 15085 "parse.c"
15088#line 5536 "parse.y"
15091 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
15095#line 15096 "parse.c"
15099#line 5545 "parse.y"
15102 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
15106#line 15107 "parse.c"
15110#line 5554 "parse.y"
15113 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
15117#line 15118 "parse.c"
15121#line 5561 "parse.y"
15124 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
15128#line 15129 "parse.c"
15132#line 5568 "parse.y"
15135 (yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc));
15139#line 15140 "parse.c"
15143#line 5579 "parse.y"
15146 NODE *body = (yyvsp[-1].node);
15147 if ((yyvsp[-3].node)) {
15148 NODE *err = NEW_ERRINFO(&(yylsp[-3]));
15149 err = node_assign(p, (yyvsp[-3].node), err, NO_LEX_CTXT, &(yylsp[-3]));
15150 body = block_append(p, err, body);
15152 (yyval.node) = NEW_RESBODY((yyvsp[-4].node), body, (yyvsp[0].node), &(yyloc));
15153 if ((yyvsp[-4].node)) {
15154 fixpos((yyval.node), (yyvsp[-4].node));
15156 else if ((yyvsp[-3].node)) {
15157 fixpos((yyval.node), (yyvsp[-3].node));
15160 fixpos((yyval.node), (yyvsp[-1].node));
15165#line 15166 "parse.c"
15169#line 5604 "parse.y"
15172 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
15176#line 15177 "parse.c"
15180#line 5611 "parse.y"
15183 if (!((yyval.node) = splat_array((yyvsp[0].node)))) (yyval.node) = (yyvsp[0].node);
15187#line 15188 "parse.c"
15191#line 5621 "parse.y"
15193 (yyval.node) = (yyvsp[0].node);
15195#line 15196 "parse.c"
15199#line 5628 "parse.y"
15201 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
15203 (yyval.node) = (yyvsp[0].node);
15207#line 15208 "parse.c"
15211#line 5643 "parse.y"
15214 NODE *node = (yyvsp[0].node);
15216 node = NEW_STR(STR_NEW0(), &(yyloc));
15220 node = evstr2dstr(p, node);
15222 (yyval.node) = node;
15226#line 15227 "parse.c"
15230#line 5662 "parse.y"
15233 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15237#line 15238 "parse.c"
15241#line 5671 "parse.y"
15244 (yyval.node) = heredoc_dedent(p, (yyvsp[-1].node));
15245 if ((yyval.node)) nd_set_loc((yyval.node), &(yyloc));
15249#line 15250 "parse.c"
15253#line 5681 "parse.y"
15256 (yyval.node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
15260#line 15261 "parse.c"
15264#line 5690 "parse.y"
15266 (yyval.node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc));
15268#line 15269 "parse.c"
15272#line 5695 "parse.y"
15274#line 15275 "parse.c"
15278#line 5700 "parse.y"
15281 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
15285#line 15286 "parse.c"
15289#line 5709 "parse.y"
15296#line 15297 "parse.c"
15300#line 5716 "parse.y"
15303 (yyval.node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
15307#line 15308 "parse.c"
15311#line 5727 "parse.y"
15314 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15318#line 15319 "parse.c"
15322#line 5736 "parse.y"
15325 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
15329#line 15330 "parse.c"
15333#line 5745 "parse.y"
15340#line 15341 "parse.c"
15344#line 5752 "parse.y"
15347 (yyval.node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
15351#line 15352 "parse.c"
15355#line 5761 "parse.y"
15358 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
15362#line 15363 "parse.c"
15366#line 5770 "parse.y"
15369 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
15373#line 15374 "parse.c"
15377#line 5779 "parse.y"
15384#line 15385 "parse.c"
15388#line 5786 "parse.y"
15391 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
15395#line 15396 "parse.c"
15399#line 5795 "parse.y"
15406#line 15407 "parse.c"
15410#line 5802 "parse.y"
15413 (yyval.node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
15417#line 15418 "parse.c"
15421#line 5811 "parse.y"
15432#line 15433 "parse.c"
15436#line 5822 "parse.y"
15439 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15452#line 15453 "parse.c"
15456#line 5840 "parse.y"
15463#line 15464 "parse.c"
15467#line 5847 "parse.y"
15470 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15474#line 15475 "parse.c"
15478#line 5856 "parse.y"
15489#line 15490 "parse.c"
15493#line 5867 "parse.y"
15496 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
15498 (yyval.node) = tail;
15501 (yyval.node) = head;
15504 switch (nd_type(head)) {
15506 head = str2dstr(p, head);
15511 head = list_append(p, NEW_DSTR(
Qnil, &(yyloc)), head);
15514 (yyval.node) = list_append(p, head, tail);
15532#line 15533 "parse.c"
15536#line 5910 "parse.y"
15539 (yyval.strterm) = p->lex.strterm;
15540 p->lex.strterm = 0;
15541 SET_LEX_STATE(EXPR_BEG);
15543#line 15544 "parse.c"
15547#line 5917 "parse.y"
15549 p->lex.strterm = (yyvsp[-1].strterm);
15551 (yyval.node) = NEW_EVSTR((yyvsp[0].node), &(yyloc));
15552 nd_set_line((yyval.node), (yylsp[0]).end_pos.lineno);
15556#line 15557 "parse.c"
15560#line 5926 "parse.y"
15565 (yyvsp[0].strterm) = p->lex.strterm;
15566 p->lex.strterm = 0;
15567 (yyval.num) = p->lex.state;
15568 SET_LEX_STATE(EXPR_BEG);
15570#line 15571 "parse.c"
15574#line 5935 "parse.y"
15576 (yyval.num) = p->lex.brace_nest;
15577 p->lex.brace_nest = 0;
15579#line 15580 "parse.c"
15583#line 5939 "parse.y"
15585 (yyval.num) = p->heredoc_indent;
15586 p->heredoc_indent = 0;
15588#line 15589 "parse.c"
15592#line 5944 "parse.y"
15596 p->lex.strterm = (yyvsp[-5].strterm);
15597 SET_LEX_STATE((yyvsp[-4].num));
15598 p->lex.brace_nest = (yyvsp[-3].num);
15599 p->heredoc_indent = (yyvsp[-2].num);
15600 p->heredoc_line_indent = -1;
15602 if ((yyvsp[-1].node)) nd_unset_fl_newline((yyvsp[-1].node));
15603 (yyval.node) = new_evstr(p, (yyvsp[-1].node), &(yyloc));
15607#line 15608 "parse.c"
15611#line 5965 "parse.y"
15614 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
15618#line 15619 "parse.c"
15622#line 5979 "parse.y"
15624 SET_LEX_STATE(EXPR_END);
15626 (yyval.node) = NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc));
15630#line 15631 "parse.c"
15634#line 5993 "parse.y"
15636 SET_LEX_STATE(EXPR_END);
15638 (yyval.node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
15642#line 15643 "parse.c"
15646#line 6004 "parse.y"
15649 (yyval.node) = (yyvsp[0].node);
15650 RB_OBJ_WRITE(p->ast, &RNODE_LIT((yyval.node))->nd_lit, negate_lit(p, RNODE_LIT((yyval.node))->nd_lit));
15654#line 15655 "parse.c"
15658#line 6029 "parse.y"
15659 {(yyval.id) = KWD2EID(nil, (yyvsp[0].
id));}
15660#line 15661 "parse.c"
15664#line 6030 "parse.y"
15665 {(yyval.id) = KWD2EID(self, (yyvsp[0].
id));}
15666#line 15667 "parse.c"
15670#line 6031 "parse.y"
15671 {(yyval.id) = KWD2EID(
true, (yyvsp[0].
id));}
15672#line 15673 "parse.c"
15676#line 6032 "parse.y"
15677 {(yyval.id) = KWD2EID(
false, (yyvsp[0].
id));}
15678#line 15679 "parse.c"
15682#line 6033 "parse.y"
15683 {(yyval.id) = KWD2EID(_FILE__, (yyvsp[0].
id));}
15684#line 15685 "parse.c"
15688#line 6034 "parse.y"
15689 {(yyval.id) = KWD2EID(_LINE__, (yyvsp[0].
id));}
15690#line 15691 "parse.c"
15694#line 6035 "parse.y"
15695 {(yyval.id) = KWD2EID(_ENCODING__, (yyvsp[0].
id));}
15696#line 15697 "parse.c"
15700#line 6039 "parse.y"
15703 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
15713#line 15714 "parse.c"
15717#line 6052 "parse.y"
15720 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
15724#line 15725 "parse.c"
15728#line 6061 "parse.y"
15731 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15735#line 15736 "parse.c"
15739#line 6068 "parse.y"
15742 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15746#line 15747 "parse.c"
15750#line 6081 "parse.y"
15752 SET_LEX_STATE(EXPR_BEG);
15753 p->command_start = TRUE;
15755#line 15756 "parse.c"
15759#line 6086 "parse.y"
15761 (yyval.node) = (yyvsp[-1].node);
15763#line 15764 "parse.c"
15767#line 6090 "parse.y"
15774#line 15775 "parse.c"
15778#line 6100 "parse.y"
15780 p->ctxt.in_argdef = 0;
15781 (yyval.node_args) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[-1]));
15782 (yyval.node_args) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyval.node_args), &(yylsp[-1]));
15784#line 15785 "parse.c"
15788#line 6108 "parse.y"
15791 (yyval.node_args) = (yyvsp[-1].node_args);
15794 SET_LEX_STATE(EXPR_BEG);
15795 p->command_start = TRUE;
15796 p->ctxt.in_argdef = 0;
15798#line 15799 "parse.c"
15802#line 6120 "parse.y"
15804 (yyval.ctxt) = p->ctxt;
15805 p->ctxt.in_kwarg = 1;
15806 p->ctxt.in_argdef = 1;
15807 SET_LEX_STATE(p->lex.state|EXPR_LABEL);
15809#line 15810 "parse.c"
15813#line 6127 "parse.y"
15815 p->ctxt.in_kwarg = (yyvsp[-2].ctxt).in_kwarg;
15816 p->ctxt.in_argdef = 0;
15817 (yyval.node_args) = (yyvsp[-1].node_args);
15818 SET_LEX_STATE(EXPR_BEG);
15819 p->command_start = TRUE;
15821#line 15822 "parse.c"
15825#line 6137 "parse.y"
15827 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
15829#line 15830 "parse.c"
15833#line 6141 "parse.y"
15835 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), Qnone, (yyvsp[0].id), &(yylsp[-1]));
15837#line 15838 "parse.c"
15841#line 6145 "parse.y"
15843 (yyval.node_args) = new_args_tail(p, Qnone, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
15845#line 15846 "parse.c"
15849#line 6149 "parse.y"
15851 (yyval.node_args) = new_args_tail(p, Qnone, Qnone, (yyvsp[0].
id), &(yylsp[0]));
15853#line 15854 "parse.c"
15857#line 6153 "parse.y"
15859 add_forwarding_args(p);
15860 (yyval.node_args) = new_args_tail(p, Qnone, (yyvsp[0].
id), arg_FWD_BLOCK, &(yylsp[0]));
15862 (yyval.node_args)->nd_ainfo.forwarding = 1;
15865#line 15866 "parse.c"
15869#line 6163 "parse.y"
15871 (yyval.node_args) = (yyvsp[0].node_args);
15873#line 15874 "parse.c"
15877#line 6167 "parse.y"
15879 (yyval.node_args) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
15881#line 15882 "parse.c"
15885#line 6173 "parse.y"
15887 (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));
15889#line 15890 "parse.c"
15893#line 6177 "parse.y"
15895 (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));
15897#line 15898 "parse.c"
15901#line 6181 "parse.y"
15903 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), Qnone, Qnone, (yyvsp[0].node_args), &(yyloc));
15905#line 15906 "parse.c"
15909#line 6185 "parse.y"
15911 (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));
15913#line 15914 "parse.c"
15917#line 6189 "parse.y"
15919 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), Qnone, (yyvsp[-1].id), Qnone, (yyvsp[0].node_args), &(yyloc));
15921#line 15922 "parse.c"
15925#line 6193 "parse.y"
15927 (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));
15929#line 15930 "parse.c"
15933#line 6197 "parse.y"
15935 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), Qnone, Qnone, Qnone, (yyvsp[0].node_args), &(yyloc));
15937#line 15938 "parse.c"
15941#line 6201 "parse.y"
15943 (yyval.node_args) = new_args(p, Qnone, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), Qnone, (yyvsp[0].node_args), &(yyloc));
15945#line 15946 "parse.c"
15949#line 6205 "parse.y"
15951 (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));
15953#line 15954 "parse.c"
15957#line 6209 "parse.y"
15959 (yyval.node_args) = new_args(p, Qnone, (yyvsp[-1].node_opt_arg), Qnone, Qnone, (yyvsp[0].node_args), &(yyloc));
15961#line 15962 "parse.c"
15965#line 6213 "parse.y"
15967 (yyval.node_args) = new_args(p, Qnone, (yyvsp[-3].node_opt_arg), Qnone, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15969#line 15970 "parse.c"
15973#line 6217 "parse.y"
15975 (yyval.node_args) = new_args(p, Qnone, Qnone, (yyvsp[-1].
id), Qnone, (yyvsp[0].node_args), &(yyloc));
15977#line 15978 "parse.c"
15981#line 6221 "parse.y"
15983 (yyval.node_args) = new_args(p, Qnone, Qnone, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15985#line 15986 "parse.c"
15989#line 6225 "parse.y"
15991 (yyval.node_args) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyvsp[0].node_args), &(yyloc));
15993#line 15994 "parse.c"
15997#line 6229 "parse.y"
15999 (yyval.node_args) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
16000 (yyval.node_args) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyval.node_args), &(yylsp[0]));
16002#line 16003 "parse.c"
16006#line 6236 "parse.y"
16009#ifdef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
16012 (yyval.id) = idFWD_KWREST;
16017#line 16018 "parse.c"
16021#line 6249 "parse.y"
16023 static const char mesg[] =
"formal argument cannot be a constant";
16025 yyerror1(&(yylsp[0]), mesg);
16030#line 16031 "parse.c"
16034#line 6258 "parse.y"
16036 static const char mesg[] =
"formal argument cannot be an instance variable";
16038 yyerror1(&(yylsp[0]), mesg);
16043#line 16044 "parse.c"
16047#line 6267 "parse.y"
16049 static const char mesg[] =
"formal argument cannot be a global variable";
16051 yyerror1(&(yylsp[0]), mesg);
16056#line 16057 "parse.c"
16060#line 6276 "parse.y"
16062 static const char mesg[] =
"formal argument cannot be a class variable";
16064 yyerror1(&(yylsp[0]), mesg);
16069#line 16070 "parse.c"
16073#line 6288 "parse.y"
16075 formal_argument(p, (yyvsp[0].
id));
16076 p->max_numparam = ORDINAL_PARAM;
16077 (yyval.id) = (yyvsp[0].
id);
16079#line 16080 "parse.c"
16083#line 6296 "parse.y"
16085 ID id = get_id((yyvsp[0].
id));
16088 (yyval.id) = (yyvsp[0].
id);
16090#line 16091 "parse.c"
16094#line 6305 "parse.y"
16098 (yyval.node_args_aux) = NEW_ARGS_AUX((yyvsp[0].
id), 1, &NULL_LOC);
16102#line 16103 "parse.c"
16106#line 6313 "parse.y"
16109 ID tid = internal_id(p);
16111 loc.beg_pos = (yylsp[-1]).beg_pos;
16112 loc.end_pos = (yylsp[-1]).beg_pos;
16114 if (dyna_in_block(p)) {
16115 (yyvsp[-1].node_masgn)->nd_value = NEW_DVAR(tid, &loc);
16118 (yyvsp[-1].node_masgn)->nd_value = NEW_LVAR(tid, &loc);
16120 (yyval.node_args_aux) = NEW_ARGS_AUX(tid, 1, &NULL_LOC);
16121 (yyval.node_args_aux)->nd_next = (
NODE *)(yyvsp[-1].node_masgn);
16125#line 16126 "parse.c"
16129#line 6336 "parse.y"
16132 (yyval.node_args_aux) = (yyvsp[-2].node_args_aux);
16133 (yyval.node_args_aux)->nd_plen++;
16134 (yyval.node_args_aux)->nd_next = block_append(p, (yyval.node_args_aux)->nd_next, (yyvsp[0].node_args_aux)->nd_next);
16135 rb_discard_node(p, (
NODE *)(yyvsp[0].node_args_aux));
16139#line 16140 "parse.c"
16143#line 6349 "parse.y"
16145 arg_var(p, formal_argument(p, (yyvsp[0].
id)));
16146 p->cur_arg = get_id((yyvsp[0].
id));
16147 p->max_numparam = ORDINAL_PARAM;
16148 p->ctxt.in_argdef = 0;
16149 (yyval.id) = (yyvsp[0].
id);
16151#line 16152 "parse.c"
16155#line 6359 "parse.y"
16158 p->ctxt.in_argdef = 1;
16160 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
16164#line 16165 "parse.c"
16168#line 6368 "parse.y"
16171 p->ctxt.in_argdef = 1;
16173 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
16177#line 16178 "parse.c"
16181#line 6379 "parse.y"
16183 p->ctxt.in_argdef = 1;
16185 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
16189#line 16190 "parse.c"
16193#line 6387 "parse.y"
16195 p->ctxt.in_argdef = 1;
16197 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
16201#line 16202 "parse.c"
16205#line 6397 "parse.y"
16208 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
16212#line 16213 "parse.c"
16216#line 6404 "parse.y"
16219 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
16223#line 16224 "parse.c"
16227#line 6414 "parse.y"
16230 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
16234#line 16235 "parse.c"
16238#line 6421 "parse.y"
16241 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
16245#line 16246 "parse.c"
16249#line 6434 "parse.y"
16255#line 16256 "parse.c"
16259#line 6442 "parse.y"
16261 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].
id))));
16263 (yyval.id) = (yyvsp[0].
id);
16267#line 16268 "parse.c"
16271#line 6450 "parse.y"
16273 arg_var(p, idFWD_KWREST);
16275 (yyval.id) = idFWD_KWREST;
16279#line 16280 "parse.c"
16283#line 6460 "parse.y"
16286 p->ctxt.in_argdef = 1;
16288 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
16292#line 16293 "parse.c"
16296#line 6471 "parse.y"
16299 p->ctxt.in_argdef = 1;
16301 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
16305#line 16306 "parse.c"
16309#line 6482 "parse.y"
16312 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
16316#line 16317 "parse.c"
16320#line 6489 "parse.y"
16323 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
16327#line 16328 "parse.c"
16331#line 6498 "parse.y"
16334 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
16338#line 16339 "parse.c"
16342#line 6505 "parse.y"
16345 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
16349#line 16350 "parse.c"
16353#line 6518 "parse.y"
16355 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].
id))));
16357 (yyval.id) = (yyvsp[0].
id);
16361#line 16362 "parse.c"
16365#line 6526 "parse.y"
16367 arg_var(p, idFWD_REST);
16369 (yyval.id) = idFWD_REST;
16373#line 16374 "parse.c"
16377#line 6540 "parse.y"
16379 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].
id))));
16381 (yyval.id) = (yyvsp[0].
id);
16385#line 16386 "parse.c"
16389#line 6548 "parse.y"
16391 arg_var(p, idFWD_BLOCK);
16393 (yyval.id) = idFWD_BLOCK;
16397#line 16398 "parse.c"
16401#line 6558 "parse.y"
16403 (yyval.id) = (yyvsp[0].
id);
16405#line 16406 "parse.c"
16409#line 6562 "parse.y"
16411 (yyval.id) = Qnull;
16413#line 16414 "parse.c"
16417#line 6568 "parse.y"
16419 value_expr((yyvsp[0].node));
16420 (yyval.node) = (yyvsp[0].node);
16422#line 16423 "parse.c"
16426#line 6572 "parse.y"
16427 {SET_LEX_STATE(EXPR_BEG);}
16428#line 16429 "parse.c"
16432#line 6573 "parse.y"
16435 NODE *expr = last_expr_node((yyvsp[-1].node));
16436 switch (nd_type(expr)) {
16446 yyerror1(&expr->nd_loc,
"can't define singleton method for literals");
16449 value_expr((yyvsp[-1].node));
16452 (yyval.node) = (yyvsp[-1].node);
16456#line 16457 "parse.c"
16460#line 6600 "parse.y"
16463 (yyval.node) = (yyvsp[-1].node);
16467#line 16468 "parse.c"
16471#line 6611 "parse.y"
16474 NODE *assocs = (yyvsp[-2].node);
16475 NODE *tail = (yyvsp[0].node);
16480 if (RNODE_LIST(assocs)->nd_head &&
16481 !RNODE_LIST(tail)->nd_head && nd_type_p(RNODE_LIST(tail)->nd_next, NODE_LIST) &&
16482 nd_type_p(RNODE_LIST(RNODE_LIST(tail)->nd_next)->nd_head, NODE_HASH)) {
16484 tail = RNODE_HASH(RNODE_LIST(RNODE_LIST(tail)->nd_next)->nd_head)->nd_head;
16486 assocs = list_concat(assocs, tail);
16488 (yyval.node) = assocs;
16492#line 16493 "parse.c"
16496#line 6634 "parse.y"
16499 if (nd_type_p((yyvsp[-2].node), NODE_STR)) {
16500 nd_set_type((yyvsp[-2].node), NODE_LIT);
16501 RB_OBJ_WRITE(p->ast, &RNODE_LIT((yyvsp[-2].node))->nd_lit, rb_fstring(RNODE_LIT((yyvsp[-2].node))->nd_lit));
16503 (yyval.node) = list_append(p, NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
16507#line 16508 "parse.c"
16511#line 6645 "parse.y"
16514 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
16518#line 16519 "parse.c"
16522#line 6652 "parse.y"
16525 NODE *val = gettable(p, (yyvsp[0].
id), &(yyloc));
16526 if (!val) val = NEW_ERROR(&(yyloc));
16527 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yylsp[0])), &(yyloc)), val);
16531#line 16532 "parse.c"
16535#line 6661 "parse.y"
16538 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
16539 (yyval.node) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
16543#line 16544 "parse.c"
16547#line 6669 "parse.y"
16550 if (nd_type_p((yyvsp[0].node), NODE_HASH) &&
16551 !(RNODE_HASH((yyvsp[0].node))->nd_head && RNODE_LIST(RNODE_HASH((yyvsp[0].node))->nd_head)->as.nd_alen)) {
16552 static VALUE empty_hash;
16554 empty_hash = rb_obj_freeze(rb_hash_new());
16555 rb_gc_register_mark_object(empty_hash);
16557 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), NEW_LIT(empty_hash, &(yyloc)));
16560 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
16564#line 16565 "parse.c"
16568#line 6686 "parse.y"
16570 forwarding_arg_check(p, idFWD_KWREST, idFWD_ALL,
"keyword rest");
16572 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)),
16573 NEW_LVAR(idFWD_KWREST, &(yyloc)));
16577#line 16578 "parse.c"
16581#line 6743 "parse.y"
16582 {yyerrok;token_flush(p);}
16583#line 16584 "parse.c"
16587#line 6745 "parse.y"
16589 (yyloc).end_pos = (yyloc).beg_pos;
16592#line 16593 "parse.c"
16596#line 6752 "parse.y"
16598#line 16599 "parse.c"
16602#line 6756 "parse.y"
16604 (yyval.node) = Qnull;
16606#line 16607 "parse.c"
16610#line 16611 "parse.c"
16625 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc, p);
16627 YYPOPSTACK (yylen);
16637 const int yylhs = yyr1[yyn] - YYNTOKENS;
16638 const int yyi = yypgoto[yylhs] + *yyssp;
16639 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
16641 : yydefgoto[yylhs]);
16653 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
16660 = {yyssp, yytoken, &yylloc};
16661 char const *yymsgp = YY_(
"syntax error");
16662 int yysyntax_error_status;
16663 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
16664 if (yysyntax_error_status == 0)
16666 else if (yysyntax_error_status == -1)
16668 if (yymsg != yymsgbuf)
16669 YYSTACK_FREE (yymsg);
16670 yymsg = YY_CAST (
char *,
16671 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
16674 yysyntax_error_status
16675 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
16681 yymsg_alloc =
sizeof yymsgbuf;
16682 yysyntax_error_status = YYENOMEM;
16685 yyerror (&yylloc, p, yymsgp);
16686 if (yysyntax_error_status == YYENOMEM)
16691 yyerror_range[1] = yylloc;
16692 if (yyerrstatus == 3)
16697 if (yychar <= END_OF_INPUT)
16700 if (yychar == END_OF_INPUT)
16705 yydestruct (
"Error: discarding",
16706 yytoken, &yylval, &yylloc, p);
16728 YYPOPSTACK (yylen);
16730 YY_STACK_PRINT (yyss, yyssp, p);
16744 yyn = yypact[yystate];
16745 if (!yypact_value_is_default (yyn))
16747 yyn += YYSYMBOL_YYerror;
16748 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
16750 yyn = yytable[yyn];
16760 yyerror_range[1] = *yylsp;
16761 yydestruct (
"Error: popping",
16762 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
16765 YY_STACK_PRINT (yyss, yyssp, p);
16768 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
16770 YY_IGNORE_MAYBE_UNINITIALIZED_END
16772 yyerror_range[2] = yylloc;
16774 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
16777 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp, p);
16803 yyerror (&yylloc, p, YY_(
"memory exhausted"));
16812 if (yychar != YYEMPTY)
16816 yytoken = YYTRANSLATE (yychar);
16817 yydestruct (
"Cleanup: discarding lookahead",
16818 yytoken, &yylval, &yylloc, p);
16822 YYPOPSTACK (yylen);
16823 YY_STACK_PRINT (yyss, yyssp, p);
16824 while (yyssp != yyss)
16826 yydestruct (
"Cleanup: popping",
16827 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
16832 YYSTACK_FREE (yyss);
16834 if (yymsg != yymsgbuf)
16835 YYSTACK_FREE (yymsg);
16839#line 6760 "parse.y"
16844# define yylval (*p->lval)
16853# define set_yylval_node(x) { \
16854 YYLTYPE _cur_loc; \
16855 rb_parser_set_location(p, &_cur_loc); \
16856 yylval.node = (x); \
16858# define set_yylval_str(x) \
16860 set_yylval_node(NEW_STR(x, &_cur_loc)); \
16861 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
16863# define set_yylval_literal(x) \
16865 set_yylval_node(NEW_LIT(x, &_cur_loc)); \
16866 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
16868# define set_yylval_num(x) (yylval.num = (x))
16869# define set_yylval_id(x) (yylval.id = (x))
16870# define set_yylval_name(x) (yylval.id = (x))
16871# define yylval_id() (yylval.id)
16876 return ripper_new_yylval(p, x,
ID2SYM(x), 0);
16878# define set_yylval_str(x) (yylval.val = add_mark_object(p, (x)))
16879# define set_yylval_num(x) (yylval.val = ripper_new_yylval(p, (x), 0, 0))
16880# define set_yylval_id(x) (void)(x)
16881# define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(p, x))
16882# define set_yylval_literal(x) add_mark_object(p, (x))
16883# define set_yylval_node(x) (yylval.val = ripper_new_yylval(p, 0, 0, STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)))
16884# define yylval_id() yylval.id
16885# define _cur_loc NULL_LOC
16888#define set_yylval_noname() set_yylval_id(keyword_nil)
16889#define has_delayed_token(p) (!NIL_P(p->delayed.token))
16892#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
16893#define dispatch_scan_event(p, t) parser_dispatch_scan_event(p, t, __LINE__)
16898 const char *
const pcur = p->lex.pcur;
16899 const char *
const ptok = p->lex.ptok;
16900 if (p->keep_tokens && (pcur < ptok)) {
16901 rb_bug(
"lex.pcur < lex.ptok. (line: %d) %"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"",
16902 p->ruby_sourceline, ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur);
16904 return pcur > ptok;
16910 VALUE ary = rb_ary_new_from_args(4,
16913 rb_obj_freeze(ary);
16919parser_append_tokens(
struct parser_params *p,
VALUE str,
enum yytokentype t,
int line)
16925 token_id = p->token_id;
16926 rb_ary_push(ary,
INT2FIX(token_id));
16927 rb_ary_push(ary,
ID2SYM(parser_token2id(p, t)));
16928 rb_ary_push(ary, str);
16929 rb_ary_push(ary, code_loc_to_ary(p, p->yylloc));
16930 rb_obj_freeze(ary);
16931 rb_ary_push(p->tokens, ary);
16935 rb_parser_printf(p,
"Append tokens (line: %d) %"PRIsVALUE
"\n", line, ary);
16940parser_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t,
int line)
16942 debug_token_line(p,
"parser_dispatch_scan_event", line);
16944 if (!parser_has_token(p))
return;
16946 RUBY_SET_YYLLOC(*p->yylloc);
16948 if (p->keep_tokens) {
16949 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
16950 parser_append_tokens(p, str, t, line);
16956#define dispatch_delayed_token(p, t) parser_dispatch_delayed_token(p, t, __LINE__)
16958parser_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t,
int line)
16960 debug_token_line(p,
"parser_dispatch_delayed_token", line);
16962 if (!has_delayed_token(p))
return;
16964 RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(*p->yylloc);
16966 if (p->keep_tokens) {
16967 parser_append_tokens(p, p->delayed.token, t, line);
16970 p->delayed.token =
Qnil;
16973#define literal_flush(p, ptr) ((void)(ptr))
16975#define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &RNODE_RIPPER(yylval.node)->nd_rval : &yylval.val))
16980 if (p->lex.pcur < p->lex.ptok) rb_raise(
rb_eRuntimeError,
"lex.pcur < lex.ptok");
16981 return p->lex.pcur > p->lex.ptok;
16985ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
16987 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
16988 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
16989 RUBY_SET_YYLLOC(*p->yylloc);
16995ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
16997 if (!ripper_has_scan_event(p))
return;
16998 add_mark_object(p, yylval_rval = ripper_scan_event_val(p, t));
17000#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
17003ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
17006 int saved_line = p->ruby_sourceline;
17007 const char *saved_tokp = p->lex.ptok;
17009 if (!has_delayed_token(p))
return;
17010 p->ruby_sourceline = p->delayed.beg_line;
17011 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
17012 add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(t), p->delayed.token));
17013 p->delayed.token =
Qnil;
17014 p->ruby_sourceline = saved_line;
17015 p->lex.ptok = saved_tokp;
17017#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
17023 return rb_enc_isalnum((
unsigned char)*ptr, enc) || *ptr ==
'_' || !
ISASCII(*ptr);
17029 return !(p)->eofp && is_identchar(p, p->lex.pcur-1, p->lex.pend, p->enc);
17035 return ISASCII(*(p->lex.pcur-1));
17041 int column = 1, nonspc = 0, i;
17042 for (i = 0; i < loc->beg_pos.column; i++, ptr++) {
17043 if (*ptr ==
'\t') {
17044 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
17047 if (*ptr !=
' ' && *ptr !=
'\t') {
17052 ptinfo->beg = loc->beg_pos;
17053 ptinfo->indent = column;
17054 ptinfo->nonspc = nonspc;
17062 if (!p->token_info_enabled)
return;
17064 ptinfo->token = token;
17065 ptinfo->next = p->token_info;
17066 token_info_setup(ptinfo, p->lex.pbeg, loc);
17068 p->token_info = ptinfo;
17076 if (!ptinfo_beg)
return;
17077 p->token_info = ptinfo_beg->next;
17080 token_info_warn(p, token, ptinfo_beg, 1, loc);
17081 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
17089 if (!ptinfo_beg)
return;
17090 p->token_info = ptinfo_beg->next;
17092 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
17093 ptinfo_beg->beg.column != beg_pos.column ||
17094 strcmp(ptinfo_beg->token, token)) {
17095 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
17096 beg_pos.lineno, beg_pos.column, token,
17097 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
17098 ptinfo_beg->token);
17101 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
17107 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
17108 if (!p->token_info_enabled)
return;
17109 if (!ptinfo_beg)
return;
17110 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
17111 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
17112 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
17113 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
17114 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
17115 rb_warn3L(ptinfo_end->beg.lineno,
17116 "mismatched indentations at '%s' with '%s' at %d",
17117 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
17121parser_precise_mbclen(
struct parser_params *p,
const char *ptr)
17123 int len = rb_enc_precise_mbclen(ptr, p->lex.pend, p->enc);
17125 compile_error(p,
"invalid multibyte char (%s)", rb_enc_name(p->enc));
17138 int lineno = p->ruby_sourceline;
17142 else if (yylloc->beg_pos.lineno == lineno) {
17143 str = p->lex.lastline;
17148 ruby_show_error_line(p, p->error_buffer, yylloc, lineno, str);
17158 yylloc = RUBY_SET_YYLLOC(current);
17160 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
17161 p->ruby_sourceline != yylloc->end_pos.lineno)) {
17165 parser_compile_error(p, yylloc,
"%s", msg);
17166 parser_show_error_line(p, yylloc);
17174 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
17181 const int max_line_margin = 30;
17182 const char *ptr, *ptr_end, *pt, *pb;
17183 const char *pre =
"", *post =
"", *pend;
17184 const char *code =
"", *caret =
"";
17186 const char *
const pbeg = RSTRING_PTR(str);
17191 if (!yylloc)
return;
17192 pend = RSTRING_END(str);
17193 if (pend > pbeg && pend[-1] ==
'\n') {
17194 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
17198 if (lineno == yylloc->end_pos.lineno &&
17199 (pend - pbeg) > yylloc->end_pos.column) {
17200 pt = pbeg + yylloc->end_pos.column;
17203 ptr = ptr_end = pt;
17204 lim = ptr - pbeg > max_line_margin ? ptr - max_line_margin : pbeg;
17205 while ((lim < ptr) && (*(ptr-1) !=
'\n')) ptr--;
17207 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
17208 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
17210 len = ptr_end - ptr;
17213 ptr = rb_enc_prev_char(pbeg, ptr, pt, rb_enc_get(str));
17214 if (ptr > pbeg) pre =
"...";
17216 if (ptr_end < pend) {
17217 ptr_end = rb_enc_prev_char(pt, ptr_end, pend, rb_enc_get(str));
17218 if (ptr_end < pend) post =
"...";
17222 if (lineno == yylloc->beg_pos.lineno) {
17223 pb += yylloc->beg_pos.column;
17224 if (pb > pt) pb = pt;
17226 if (pb < ptr) pb = ptr;
17230 if (
RTEST(errbuf)) {
17231 mesg = rb_attr_get(errbuf, idMesg);
17232 if (RSTRING_LEN(mesg) > 0 && *(RSTRING_END(mesg)-1) !=
'\n')
17236 mesg = rb_enc_str_new(0, 0, rb_enc_get(str));
17238 if (!errbuf && rb_stderr_tty_p()) {
17239#define CSI_BEGIN "\033["
17242 CSI_BEGIN
""CSI_SGR
"%s"
17243 CSI_BEGIN
"1"CSI_SGR
"%.*s"
17244 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
17245 CSI_BEGIN
";1"CSI_SGR
"%.*s"
17246 CSI_BEGIN
""CSI_SGR
"%s"
17249 (
int)(pb - ptr), ptr,
17250 (
int)(pt - pb), pb,
17251 (
int)(ptr_end - pt), pt,
17257 len = ptr_end - ptr;
17258 lim = pt < pend ? pt : pend;
17259 i = (int)(lim - ptr);
17265 *p2++ = *ptr++ ==
'\t' ?
'\t' :
' ';
17271 memset(p2,
'~', (lim - ptr));
17275 rb_str_catf(mesg,
"%s%.*s%s\n""%s%s\n",
17276 pre, (
int)
len, code, post,
17279 if (!errbuf) rb_write_error_str(mesg);
17285 const char *pcur = 0, *ptok = 0;
17286 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
17287 p->ruby_sourceline == yylloc->end_pos.lineno) {
17288 pcur = p->lex.pcur;
17289 ptok = p->lex.ptok;
17290 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
17291 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
17293 parser_yyerror0(p, msg);
17295 p->lex.ptok = ptok;
17296 p->lex.pcur = pcur;
17304 dispatch1(parse_error, STR_NEW2(msg));
17317vtable_size(
const struct vtable *tbl)
17319 if (!DVARS_TERMINAL_P(tbl)) {
17338 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
17343#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
17346vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
17351 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
17354 if (!DVARS_TERMINAL_P(tbl)) {
17356 ruby_sized_xfree(tbl->tbl, tbl->capa *
sizeof(
ID));
17358 ruby_sized_xfree(tbl,
sizeof(*tbl));
17361#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
17364vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
17369 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
17370 line, name, (
void *)tbl, rb_id2name(
id));
17373 if (DVARS_TERMINAL_P(tbl)) {
17374 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
17377 if (tbl->pos == tbl->capa) {
17378 tbl->capa = tbl->capa * 2;
17379 SIZED_REALLOC_N(tbl->tbl,
ID, tbl->capa, tbl->pos);
17381 tbl->tbl[tbl->pos++] = id;
17383#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
17387vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
17388 struct vtable *tbl,
int n)
17391 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
17392 line, name, (
void *)tbl, n);
17394 if (tbl->pos < n) {
17395 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
17400#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
17404vtable_included(
const struct vtable * tbl,
ID id)
17408 if (!DVARS_TERMINAL_P(tbl)) {
17409 for (i = 0; i < tbl->pos; i++) {
17410 if (tbl->tbl[i] ==
id) {
17426 return strcmp(p->ruby_sourcefile,
"-e") == 0;
17430yycompile0(
VALUE arg)
17437 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string)) {
17438 if (p->debug_lines && p->ruby_sourceline > 0) {
17439 VALUE str = rb_default_rs;
17440 n = p->ruby_sourceline;
17442 rb_ary_push(p->debug_lines, str);
17446 if (!e_option_supplied(p)) {
17451 if (p->debug_lines) {
17452 RB_OBJ_WRITE(p->ast, &p->ast->body.script_lines, p->debug_lines);
17456#define RUBY_DTRACE_PARSE_HOOK(name) \
17457 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
17458 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
17460 RUBY_DTRACE_PARSE_HOOK(BEGIN);
17462 RUBY_DTRACE_PARSE_HOOK(END);
17463 p->debug_lines = 0;
17465 p->lex.strterm = 0;
17466 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
17467 if (n || p->error_p) {
17468 VALUE mesg = p->error_buffer;
17470 mesg = syntax_error_new();
17472 if (!p->error_tolerant) {
17473 rb_set_errinfo(mesg);
17477 tree = p->eval_tree;
17479 tree = NEW_NIL(&NULL_LOC);
17482 VALUE tokens = p->tokens;
17484 NODE *body = parser_append_options(p, RNODE_SCOPE(tree)->nd_body);
17485 prelude = block_append(p, p->eval_tree_begin, body);
17486 RNODE_SCOPE(tree)->nd_body = prelude;
17487 p->ast->body.frozen_string_literal = p->frozen_string_literal;
17488 p->ast->body.coverage_enabled = cov;
17489 if (p->keep_tokens) {
17490 rb_obj_freeze(tokens);
17491 rb_ast_set_tokens(p->ast, tokens);
17494 p->ast->body.root = tree;
17495 if (!p->ast->body.script_lines) p->ast->body.script_lines =
INT2FIX(p->line_count);
17503 if (
NIL_P(fname)) {
17504 p->ruby_sourcefile_string =
Qnil;
17505 p->ruby_sourcefile =
"(none)";
17508 p->ruby_sourcefile_string = rb_fstring(fname);
17511 p->ruby_sourceline = line - 1;
17515 p->ast = ast = rb_ast_new();
17516 compile_callback(yycompile0, (
VALUE)p);
17531 if (!rb_enc_asciicompat(enc)) {
17532 rb_raise(rb_eArgError,
"invalid source encoding");
17540 char *beg, *end, *start;
17543 beg = RSTRING_PTR(s);
17544 len = RSTRING_LEN(s);
17546 if (p->lex.gets_.ptr) {
17547 if (
len == p->lex.gets_.ptr)
return Qnil;
17548 beg += p->lex.gets_.ptr;
17549 len -= p->lex.gets_.ptr;
17551 end = memchr(beg,
'\n',
len);
17552 if (end)
len = ++end - beg;
17553 p->lex.gets_.ptr +=
len;
17554 return rb_str_subseq(s, beg - start,
len);
17560 VALUE line = (*p->lex.gets)(p, p->lex.input);
17561 if (
NIL_P(line))
return line;
17562 must_be_ascii_compatible(p, line);
17563 if (RB_OBJ_FROZEN(line)) line = rb_str_dup(line);
17572 p->lex.gets = lex_get_str;
17573 p->lex.gets_.ptr = 0;
17574 p->lex.input = rb_str_new_frozen(s);
17575 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
17577 return yycompile(p, fname, line);
17583 must_be_ascii_compatible(p, s);
17584 return parser_compile_string(p, f, s, line);
17588rb_ruby_parser_compile_string(
rb_parser_t *p,
const char *f,
VALUE s,
int line)
17590 return rb_ruby_parser_compile_string_path(p, rb_filesystem_str_new_cstr(f), s, line);
17596 return rb_io_gets_internal(io);
17602 p->lex.gets = lex_io_gets;
17603 p->lex.input = file;
17604 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
17606 return yycompile(p, fname, start);
17612 return (*p->lex.gets_.call)(input, p->line_count);
17618 p->lex.gets = lex_generic_gets;
17619 p->lex.gets_.call = lex_gets;
17620 p->lex.input = input;
17621 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
17623 return yycompile(p, fname, start);
17627#define STR_FUNC_ESCAPE 0x01
17628#define STR_FUNC_EXPAND 0x02
17629#define STR_FUNC_REGEXP 0x04
17630#define STR_FUNC_QWORDS 0x08
17631#define STR_FUNC_SYMBOL 0x10
17632#define STR_FUNC_INDENT 0x20
17633#define STR_FUNC_LABEL 0x40
17634#define STR_FUNC_LIST 0x4000
17635#define STR_FUNC_TERM 0x8000
17638 str_label = STR_FUNC_LABEL,
17640 str_dquote = (STR_FUNC_EXPAND),
17641 str_xquote = (STR_FUNC_EXPAND),
17642 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
17643 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
17644 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
17645 str_ssym = (STR_FUNC_SYMBOL),
17646 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
17654 str = rb_enc_str_new(ptr,
len, enc);
17655 if (!(func & STR_FUNC_REGEXP) && rb_enc_asciicompat(enc)) {
17656 if (is_ascii_string(str)) {
17658 else if (rb_is_usascii_enc((
void *)enc0) && enc != rb_utf8_encoding()) {
17659 rb_enc_associate(str, rb_ascii8bit_encoding());
17669 return strterm->flags & STRTERM_HEREDOC;
17673new_strterm(
struct parser_params *p,
int func,
int term,
int paren)
17676 strterm->u.literal.func = func;
17677 strterm->u.literal.term = term;
17678 strterm->u.literal.paren = paren;
17686 strterm->flags |= STRTERM_HEREDOC;
17690#define peek(p,c) peek_n(p, (c), 0)
17691#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
17692#define peekc(p) peekc_n(p, 0)
17693#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
17696add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end,
int line)
17699 debug_token_line(p,
"add_delayed_token", line);
17703 if (has_delayed_token(p)) {
17704 bool next_line = end_with_newline_p(p, p->delayed.token);
17705 int end_line = (next_line ? 1 : 0) + p->delayed.end_line;
17706 int end_col = (next_line ? 0 : p->delayed.end_col);
17707 if (end_line != p->ruby_sourceline || end_col != tok - p->lex.pbeg) {
17708 dispatch_delayed_token(p, tSTRING_CONTENT);
17711 if (!has_delayed_token(p)) {
17712 p->delayed.token = rb_str_buf_new(end - tok);
17713 rb_enc_associate(p->delayed.token, p->enc);
17714 p->delayed.beg_line = p->ruby_sourceline;
17715 p->delayed.beg_col =
rb_long2int(tok - p->lex.pbeg);
17718 p->delayed.end_line = p->ruby_sourceline;
17719 p->delayed.end_col =
rb_long2int(end - p->lex.pbeg);
17727 p->lex.pbeg = p->lex.pcur = RSTRING_PTR(v);
17728 p->lex.pend = p->lex.pcur + RSTRING_LEN(v);
17729 p->lex.lastline = v;
17735 VALUE v = p->lex.nextline;
17736 p->lex.nextline = 0;
17741 if (!lex_eol_ptr_p(p, p->lex.pbeg) && *(p->lex.pend-1) !=
'\n') {
17745 if (!p->lex.input ||
NIL_P(v = lex_getline(p))) {
17752 if (p->debug_lines) {
17753 if (set_encoding) rb_enc_associate(v, p->enc);
17754 rb_ary_push(p->debug_lines, v);
17757 p->cr_seen = FALSE;
17759 else if (
NIL_P(v)) {
17763 add_delayed_token(p, p->lex.ptok, p->lex.pend, __LINE__);
17764 if (p->heredoc_end > 0) {
17765 p->ruby_sourceline = p->heredoc_end;
17766 p->heredoc_end = 0;
17768 p->ruby_sourceline++;
17769 set_lastline(p, v);
17777 if (peek(p,
'\n')) {
17789 if (UNLIKELY(lex_eol_p(p) || p->eofp ||
RTEST(p->lex.nextline))) {
17790 if (nextline(p, set_encoding))
return -1;
17792 c = (
unsigned char)*p->lex.pcur++;
17793 if (UNLIKELY(c ==
'\r')) {
17794 c = parser_cr(p, c);
17799#define nextc(p) nextc0(p, TRUE)
17804 if (c == -1)
return;
17807 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
17812#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
17814#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
17815#define tok(p) (p)->tokenbuf
17816#define toklen(p) (p)->tokidx
17821 const char *ptr = p->lex.pcur;
17822 while (!lex_eol_ptr_p(p, ptr)) {
17823 int c = (
unsigned char)*ptr++;
17824 int eol = (c ==
'\n' || c ==
'#');
17836 if (!p->tokenbuf) {
17838 p->tokenbuf =
ALLOC_N(
char, 60);
17840 if (p->toksiz > 4096) {
17844 return p->tokenbuf;
17852 if (p->tokidx >= p->toksiz) {
17853 do {p->toksiz *= 2;}
while (p->toksiz < p->tokidx);
17854 REALLOC_N(p->tokenbuf,
char, p->toksiz);
17856 return &p->tokenbuf[p->tokidx-n];
17862 p->tokenbuf[p->tokidx++] = (char)c;
17863 if (p->tokidx >= p->toksiz) {
17865 REALLOC_N(p->tokenbuf,
char, p->toksiz);
17874 c = (int)ruby_scan_hex(p->lex.pcur, 2, numlen);
17876 yyerror0(
"invalid hex escape");
17877 dispatch_scan_event(p, tSTRING_CONTENT);
17880 p->lex.pcur += *numlen;
17884#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
17887escaped_control_code(
int c)
17913#define WARN_SPACE_CHAR(c, prefix) \
17914 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c2))
17918 int regexp_literal,
int wide)
17921 int codepoint = (int)ruby_scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
17922 p->lex.pcur += numlen;
17923 if (p->lex.strterm == NULL ||
17924 strterm_is_heredoc(p->lex.strterm) ||
17925 (p->lex.strterm->u.literal.func != str_regexp)) {
17926 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
17927 literal_flush(p, p->lex.pcur);
17928 yyerror0(
"invalid Unicode escape");
17929 return wide && numlen > 0;
17931 if (codepoint > 0x10ffff) {
17932 literal_flush(p, p->lex.pcur);
17933 yyerror0(
"invalid Unicode codepoint (too large)");
17936 if ((codepoint & 0xfffff800) == 0xd800) {
17937 literal_flush(p, p->lex.pcur);
17938 yyerror0(
"invalid Unicode codepoint");
17942 if (regexp_literal) {
17943 tokcopy(p, (
int)numlen);
17945 else if (codepoint >= 0x80) {
17947 if (*encp && utf8 != *encp) {
17948 YYLTYPE loc = RUBY_INIT_YYLLOC();
17949 compile_error(p,
"UTF-8 mixed within %s source", rb_enc_name(*encp));
17950 parser_show_error_line(p, &loc);
17954 tokaddmbc(p, codepoint, *encp);
17957 tokadd(p, codepoint);
17967 int len = parser_precise_mbclen(p, p->lex.pcur-1);
17969 p->lex.pcur +=
len - 1;
17977 int term,
int symbol_literal,
int regexp_literal)
17984 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
17986 const int open_brace =
'{', close_brace =
'}';
17988 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
17990 if (peek(p, open_brace)) {
17991 if (regexp_literal && p->lex.strterm->u.literal.func == str_regexp) {
17998 tokadd(p, open_brace);
17999 while (!lex_eol_ptr_p(p, ++p->lex.pcur)) {
18001 if (c == close_brace) {
18006 else if (c == term) {
18009 if (c ==
'\\' && !lex_eol_n_p(p, 1)) {
18011 c = *++p->lex.pcur;
18013 tokadd_mbchar(p, c);
18017 const char *second = NULL;
18018 int c, last = nextc(p);
18019 if (lex_eol_p(p))
goto unterminated;
18020 while (
ISSPACE(c = peekc(p)) && !lex_eol_ptr_p(p, ++p->lex.pcur));
18021 while (c != close_brace) {
18022 if (c == term)
goto unterminated;
18023 if (second == multiple_codepoints)
18024 second = p->lex.pcur;
18025 if (regexp_literal) tokadd(p, last);
18026 if (!tokadd_codepoint(p, encp, regexp_literal, TRUE)) {
18029 while (
ISSPACE(c = peekc(p))) {
18030 if (lex_eol_ptr_p(p, ++p->lex.pcur))
goto unterminated;
18033 if (term == -1 && !second)
18034 second = multiple_codepoints;
18037 if (c != close_brace) {
18040 yyerror0(
"unterminated Unicode escape");
18043 if (second && second != multiple_codepoints) {
18044 const char *pcur = p->lex.pcur;
18045 p->lex.pcur = second;
18046 dispatch_scan_event(p, tSTRING_CONTENT);
18048 p->lex.pcur = pcur;
18049 yyerror0(multiple_codepoints);
18053 if (regexp_literal) tokadd(p, close_brace);
18058 if (!tokadd_codepoint(p, encp, regexp_literal, FALSE)) {
18065#define ESCAPE_CONTROL 1
18066#define ESCAPE_META 2
18074 switch (c = nextc(p)) {
18099 case '0':
case '1':
case '2':
case '3':
18100 case '4':
case '5':
case '6':
case '7':
18102 c = (int)ruby_scan_oct(p->lex.pcur, 3, &numlen);
18103 p->lex.pcur += numlen;
18107 c = tok_hex(p, &numlen);
18108 if (numlen == 0)
return 0;
18118 if (flags & ESCAPE_META)
goto eof;
18119 if ((c = nextc(p)) !=
'-') {
18122 if ((c = nextc(p)) ==
'\\') {
18123 switch (peekc(p)) {
18124 case 'u':
case 'U':
18128 return read_escape(p, flags|ESCAPE_META) | 0x80;
18130 else if (c == -1 || !
ISASCII(c))
goto eof;
18132 int c2 = escaped_control_code(c);
18134 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
18135 WARN_SPACE_CHAR(c2,
"\\M-");
18138 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
18141 else if (
ISCNTRL(c))
goto eof;
18142 return ((c & 0xff) | 0x80);
18146 if ((c = nextc(p)) !=
'-') {
18150 if (flags & ESCAPE_CONTROL)
goto eof;
18151 if ((c = nextc(p))==
'\\') {
18152 switch (peekc(p)) {
18153 case 'u':
case 'U':
18157 c = read_escape(p, flags|ESCAPE_CONTROL);
18161 else if (c == -1)
goto eof;
18167 int c2 = escaped_control_code(c);
18170 if (flags & ESCAPE_META) {
18171 WARN_SPACE_CHAR(c2,
"\\M-");
18174 WARN_SPACE_CHAR(c2,
"");
18178 if (flags & ESCAPE_META) {
18179 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
18182 WARN_SPACE_CHAR(c2,
"\\C-");
18186 else if (
ISCNTRL(c))
goto eof;
18192 yyerror0(
"Invalid escape character syntax");
18193 dispatch_scan_event(p, tSTRING_CONTENT);
18204 int len = rb_enc_codelen(c, enc);
18205 rb_enc_mbcput(c, tokspace(p,
len), enc);
18214 switch (c = nextc(p)) {
18218 case '0':
case '1':
case '2':
case '3':
18219 case '4':
case '5':
case '6':
case '7':
18221 ruby_scan_oct(--p->lex.pcur, 3, &numlen);
18222 if (numlen == 0)
goto eof;
18223 p->lex.pcur += numlen;
18224 tokcopy(p, (
int)numlen + 1);
18230 tok_hex(p, &numlen);
18231 if (numlen == 0)
return -1;
18232 tokcopy(p, (
int)numlen + 2);
18238 yyerror0(
"Invalid escape character syntax");
18258 while (c = nextc(p),
ISALPHA(c)) {
18260 options |= RE_OPTION_ONCE;
18262 else if (rb_char_to_option_kcode(c, &opt, &kc)) {
18264 if (kc != rb_ascii8bit_encindex()) kcode = c;
18278 YYLTYPE loc = RUBY_INIT_YYLLOC();
18280 compile_error(p,
"unknown regexp option%s - %*s",
18281 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
18282 parser_show_error_line(p, &loc);
18284 return options | RE_OPTION_ENCODING(kcode);
18290 int len = parser_precise_mbclen(p, p->lex.pcur-1);
18291 if (
len < 0)
return -1;
18293 p->lex.pcur += --
len;
18294 if (
len > 0) tokcopy(p,
len);
18299simple_re_meta(
int c)
18302 case '$':
case '*':
case '+':
case '.':
18303 case '?':
case '^':
case '|':
18304 case ')':
case ']':
case '}':
case '>':
18312parser_update_heredoc_indent(
struct parser_params *p,
int c)
18314 if (p->heredoc_line_indent == -1) {
18315 if (c ==
'\n') p->heredoc_line_indent = 0;
18319 p->heredoc_line_indent++;
18322 else if (c ==
'\t') {
18323 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
18324 p->heredoc_line_indent = w * TAB_WIDTH;
18327 else if (c !=
'\n') {
18328 if (p->heredoc_indent > p->heredoc_line_indent) {
18329 p->heredoc_indent = p->heredoc_line_indent;
18331 p->heredoc_line_indent = -1;
18340 YYLTYPE loc = RUBY_INIT_YYLLOC();
18341 const char *n1 = rb_enc_name(enc1), *n2 = rb_enc_name(enc2);
18342 compile_error(p,
"%s mixed within %s source", n1, n2);
18343 parser_show_error_line(p, &loc);
18349 const char *pos = p->lex.pcur;
18351 parser_mixed_error(p, enc1, enc2);
18356nibble_char_upper(
unsigned int c)
18359 return c + (c < 10 ?
'0' :
'A' - 10);
18364 int func,
int term,
int paren,
long *nest,
18368 bool erred =
false;
18370 const int heredoc_end = (p->heredoc_end ? p->heredoc_end + 1 : 0);
18371 int top_of_line = FALSE;
18374#define mixed_error(enc1, enc2) \
18375 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
18376#define mixed_escape(beg, enc1, enc2) \
18377 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
18379 while ((c = nextc(p)) != -1) {
18380 if (p->heredoc_indent > 0) {
18381 parser_update_heredoc_indent(p, c);
18384 if (top_of_line && heredoc_end == p->ruby_sourceline) {
18390 if (paren && c == paren) {
18393 else if (c == term) {
18394 if (!nest || !*nest) {
18400 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && !lex_eol_p(p)) {
18401 unsigned char c2 = *p->lex.pcur;
18402 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
18407 else if (c ==
'\\') {
18411 if (func & STR_FUNC_QWORDS)
break;
18412 if (func & STR_FUNC_EXPAND) {
18413 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
18424 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
18428 if ((func & STR_FUNC_EXPAND) == 0) {
18432 tokadd_utf8(p, enc, term,
18433 func & STR_FUNC_SYMBOL,
18434 func & STR_FUNC_REGEXP);
18438 if (c == -1)
return -1;
18440 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
18443 if (func & STR_FUNC_REGEXP) {
18449 c = read_escape(p, 0);
18454 *t++ = nibble_char_upper(c >> 4);
18455 *t++ = nibble_char_upper(c);
18460 if (c == term && !simple_re_meta(c)) {
18465 if ((c = tokadd_escape(p)) < 0)
18467 if (*enc && *enc != *encp) {
18468 mixed_escape(p->lex.ptok+2, *enc, *encp);
18472 else if (func & STR_FUNC_EXPAND) {
18474 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
18475 c = read_escape(p, 0);
18477 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
18480 else if (c != term && !(paren && c == paren)) {
18487 else if (!parser_isascii(p)) {
18492 else if (*enc != *encp) {
18493 mixed_error(*enc, *encp);
18496 if (tokadd_mbchar(p, c) == -1)
return -1;
18499 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
18507 else if (*enc != *encp) {
18508 mixed_error(*enc, *encp);
18514 top_of_line = (c ==
'\n');
18518 if (*enc) *encp = *enc;
18522#define NEW_STRTERM(func, term, paren) new_strterm(p, func, term, paren)
18528 VALUE content = yylval.val;
18529 if (!ripper_is_node_yylval(p, content))
18530 content = ripper_new_yylval(p, 0, 0, content);
18531 if (has_delayed_token(p)) {
18532 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
18534 rb_enc_str_buf_cat(p->delayed.token, p->lex.ptok,
len, enc);
18536 dispatch_delayed_token(p, tSTRING_CONTENT);
18537 p->lex.ptok = p->lex.pcur;
18538 RNODE_RIPPER(content)->nd_rval = yylval.val;
18540 dispatch_scan_event(p, tSTRING_CONTENT);
18541 if (yylval.val != content)
18542 RNODE_RIPPER(content)->nd_rval = yylval.val;
18543 yylval.val = content;
18549 if (has_delayed_token(p)) {
18550 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
18552 rb_enc_str_buf_cat(p->delayed.token, p->lex.ptok,
len, enc);
18553 p->delayed.end_line = p->ruby_sourceline;
18554 p->delayed.end_col =
rb_long2int(p->lex.pcur - p->lex.pbeg);
18556 dispatch_delayed_token(p, tSTRING_CONTENT);
18557 p->lex.ptok = p->lex.pcur;
18559 dispatch_scan_event(p, tSTRING_CONTENT);
18563RUBY_FUNC_EXPORTED
const uint_least32_t ruby_global_name_punct_bits[(0x7e - 0x20 + 31) / 32];
18567#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
18568#define SPECIAL_PUNCT(idx) ( \
18569 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', 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) | \
18575const uint_least32_t ruby_global_name_punct_bits[] = {
18581#undef SPECIAL_PUNCT
18584static enum yytokentype
18585parser_peek_variable_name(struct parser_params *p)
18588 const char *ptr = p->lex.pcur;
18590 if (lex_eol_ptr_n_p(p, ptr, 1)) return 0;
18594 if ((c = *ptr) == '-') {
18595 if (lex_eol_ptr_p(p, ++ptr)) return 0;
18598 else if (is_global_name_punct(c) || ISDIGIT(c)) {
18599 return tSTRING_DVAR;
18603 if ((c = *ptr) == '@') {
18604 if (lex_eol_ptr_p(p, ++ptr)) return 0;
18610 p->command_start = TRUE;
18611 return tSTRING_DBEG;
18615 if (!ISASCII(c) || c == '_' || ISALPHA(c))
18616 return tSTRING_DVAR;
18620#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
18621#define IS_END() IS_lex_state(EXPR_END_ANY)
18622#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
18623#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
18624#define IS_LABEL_POSSIBLE() (\
18625 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
18627#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
18628#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
18630static inline enum yytokentype
18631parser_string_term(struct parser_params *p, int func)
18633 xfree(p->lex.strterm);
18634 p->lex.strterm = 0;
18635 if (func & STR_FUNC_REGEXP) {
18636 set_yylval_num(regx_options(p));
18637 dispatch_scan_event(p, tREGEXP_END);
18638 SET_LEX_STATE(EXPR_END);
18639 return tREGEXP_END;
18641 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
18643 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
18646 SET_LEX_STATE(EXPR_END);
18647 return tSTRING_END;
18650static enum yytokentype
18651parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
18653 int func = quote->func;
18654 int term = quote->term;
18655 int paren = quote->paren;
18657 rb_encoding *enc = p->enc;
18658 rb_encoding *base_enc = 0;
18661 if (func & STR_FUNC_TERM) {
18662 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
18663 SET_LEX_STATE(EXPR_END);
18664 xfree(p->lex.strterm);
18665 p->lex.strterm = 0;
18666 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
18669 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
18670 while (c != '\n' && ISSPACE(c = nextc(p)));
18673 if (func & STR_FUNC_LIST) {
18674 quote->func &= ~STR_FUNC_LIST;
18677 if (c == term && !quote->nest) {
18678 if (func & STR_FUNC_QWORDS) {
18679 quote->func |= STR_FUNC_TERM;
18680 pushback(p, c); /* dispatch the term at tSTRING_END */
18681 add_delayed_token(p, p->lex.ptok, p->lex.pcur, __LINE__);
18684 return parser_string_term(p, func);
18687 if (!ISSPACE(c)) pushback(p, c);
18688 add_delayed_token(p, p->lex.ptok, p->lex.pcur, __LINE__);
18692 if ((func & STR_FUNC_EXPAND) && c == '#') {
18693 enum yytokentype t = parser_peek_variable_name(p);
18699 if (tokadd_string(p, func, term, paren, "e->nest,
18700 &enc, &base_enc) == -1) {
18703# define unterminated_literal(mesg) yyerror0(mesg)
18705# define unterminated_literal(mesg) compile_error(p, mesg)
18707 literal_flush(p, p->lex.pcur);
18708 if (func & STR_FUNC_QWORDS) {
18709 /* no content to add, bailing out here */
18710 unterminated_literal("unterminated list meets end of file");
18711 xfree(p->lex.strterm);
18712 p->lex.strterm = 0;
18713 return tSTRING_END;
18715 if (func & STR_FUNC_REGEXP) {
18716 unterminated_literal("unterminated regexp meets end of file");
18719 unterminated_literal("unterminated string meets end of file");
18721 quote->func |= STR_FUNC_TERM;
18726 lit = STR_NEW3(tok(p), toklen(p), enc, func);
18727 set_yylval_str(lit);
18728 flush_string_content(p, enc);
18730 return tSTRING_CONTENT;
18733static enum yytokentype
18734heredoc_identifier(struct parser_params *p)
18737 * term_len is length of `<<"END"` except `END`,
18738 * in this case term_len is 4 (<, <, " and ").
18740 long len, offset = p->lex.pcur - p->lex.pbeg;
18741 int c = nextc(p), term, func = 0, quote = 0;
18742 enum yytokentype token = tSTRING_BEG;
18747 func = STR_FUNC_INDENT;
18750 else if (c == '~') {
18752 func = STR_FUNC_INDENT;
18758 func |= str_squote; goto quoted;
18760 func |= str_dquote;
goto quoted;
18762 token = tXSTRING_BEG;
18763 func |= str_xquote;
goto quoted;
18770 while ((c = nextc(p)) != term) {
18771 if (c == -1 || c ==
'\r' || c ==
'\n') {
18772 yyerror0(
"unterminated here document identifier");
18779 if (!parser_is_identchar(p)) {
18781 if (func & STR_FUNC_INDENT) {
18782 pushback(p, indent > 0 ?
'~' :
'-');
18786 func |= str_dquote;
18788 int n = parser_precise_mbclen(p, p->lex.pcur-1);
18789 if (n < 0)
return 0;
18790 p->lex.pcur += --n;
18791 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
18796 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
18797 if ((
unsigned long)
len >= HERETERM_LENGTH_MAX)
18798 yyerror0(
"too long here document identifier");
18799 dispatch_scan_event(p, tHEREDOC_BEG);
18802 p->lex.strterm = new_heredoc(p);
18804 here->offset = offset;
18805 here->sourceline = p->ruby_sourceline;
18806 here->length = (unsigned)
len;
18807 here->quote = quote;
18809 here->lastline = p->lex.lastline;
18810 rb_ast_add_mark_object(p->ast, p->lex.lastline);
18813 p->heredoc_indent = indent;
18814 p->heredoc_line_indent = 0;
18824 p->lex.strterm = 0;
18825 line = here->lastline;
18826 p->lex.lastline = line;
18827 p->lex.pbeg = RSTRING_PTR(line);
18828 p->lex.pend = p->lex.pbeg + RSTRING_LEN(line);
18829 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
18830 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
18831 p->heredoc_end = p->ruby_sourceline;
18832 p->ruby_sourceline = (int)here->sourceline;
18833 if (p->eofp) p->lex.nextline =
Qnil;
18836 rb_ast_delete_mark_object(p->ast, line);
18847 for (i = 0; i <
len && col < width; i++) {
18848 if (str[i] ==
' ') {
18851 else if (str[i] ==
'\t') {
18852 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
18853 if (n > width)
break;
18861 rb_str_modify(
string);
18862 str = RSTRING_PTR(
string);
18863 if (RSTRING_LEN(
string) !=
len)
18864 rb_fatal(
"literal string changed: %+"PRIsVALUE,
string);
18866 rb_str_set_len(
string,
len - i);
18874 NODE *node, *str_node, *prev_node;
18875 int indent = p->heredoc_indent;
18876 VALUE prev_lit = 0;
18878 if (indent <= 0)
return root;
18879 p->heredoc_indent = 0;
18880 if (!root)
return root;
18882 prev_node = node = str_node = root;
18883 if (nd_type_p(root, NODE_LIST)) str_node = RNODE_LIST(root)->nd_head;
18886 VALUE lit = RNODE_LIT(str_node)->nd_lit;
18887 if (nd_fl_newline(str_node)) {
18888 dedent_string(p, lit, indent);
18893 else if (!literal_concat0(p, prev_lit, lit)) {
18897 NODE *end = RNODE_LIST(node)->as.nd_end;
18898 node = RNODE_LIST(prev_node)->nd_next = RNODE_LIST(node)->nd_next;
18900 if (nd_type_p(prev_node, NODE_DSTR))
18901 nd_set_type(prev_node, NODE_STR);
18904 RNODE_LIST(node)->as.nd_end = end;
18909 while ((nd_type_p(node, NODE_LIST) || nd_type_p(node, NODE_DSTR)) && (node = RNODE_LIST(prev_node = node)->nd_next) != 0) {
18911 if (!nd_type_p(node, NODE_LIST))
break;
18912 if ((str_node = RNODE_LIST(node)->nd_head) != 0) {
18913 enum node_type
type = nd_type(str_node);
18914 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
18926 int indent = p->heredoc_indent;
18928 if (indent <= 0)
return array;
18929 p->heredoc_indent = 0;
18930 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
18936whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
18938 const char *beg = p->lex.pbeg;
18939 const char *ptr = p->lex.pend;
18941 if (ptr - beg <
len)
return FALSE;
18942 if (ptr > beg && ptr[-1] ==
'\n') {
18943 if (--ptr > beg && ptr[-1] ==
'\r') --ptr;
18944 if (ptr - beg <
len)
return FALSE;
18946 if (strncmp(eos, ptr -=
len,
len))
return FALSE;
18948 while (beg < ptr &&
ISSPACE(*beg)) beg++;
18956 if (strncmp(p->lex.pcur, word,
len))
return 0;
18957 if (lex_eol_n_p(p,
len))
return 1;
18958 int c = (
unsigned char)p->lex.pcur[
len];
18961 case '\0':
case '\004':
case '\032':
return 1;
18966#define NUM_SUFFIX_R (1<<0)
18967#define NUM_SUFFIX_I (1<<1)
18968#define NUM_SUFFIX_ALL 3
18974 const char *lastp = p->lex.pcur;
18976 while ((c = nextc(p)) != -1) {
18977 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
18978 result |= (mask & NUM_SUFFIX_I);
18979 mask &= ~NUM_SUFFIX_I;
18981 mask &= ~NUM_SUFFIX_R;
18984 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
18985 result |= (mask & NUM_SUFFIX_R);
18986 mask &= ~NUM_SUFFIX_R;
18990 p->lex.pcur = lastp;
18991 literal_flush(p, p->lex.pcur);
19000static enum yytokentype
19002 enum yytokentype
type,
int suffix)
19004 if (suffix & NUM_SUFFIX_I) {
19005 v = rb_complex_raw(
INT2FIX(0), v);
19008 set_yylval_literal(v);
19009 SET_LEX_STATE(EXPR_END);
19013static enum yytokentype
19016 enum yytokentype
type = tINTEGER;
19017 if (suffix & NUM_SUFFIX_R) {
19021 return set_number_literal(p, v,
type, suffix);
19029 if (has_delayed_token(p))
19030 dispatch_delayed_token(p, tSTRING_CONTENT);
19031 str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
19032 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
19033 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
19039#define dispatch_heredoc_end(p) parser_dispatch_heredoc_end(p, __LINE__)
19041parser_dispatch_heredoc_end(
struct parser_params *p,
int line)
19043 if (has_delayed_token(p))
19044 dispatch_delayed_token(p, tSTRING_CONTENT);
19046 if (p->keep_tokens) {
19047 VALUE str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
19048 RUBY_SET_YYLLOC_OF_HEREDOC_END(*p->yylloc);
19049 parser_append_tokens(p, str, tHEREDOC_END, line);
19052 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
19058static enum yytokentype
19061 int c, func, indent = 0;
19062 const char *eos, *ptr, *ptr_end;
19069 eos = RSTRING_PTR(here->lastline) + here->offset;
19070 len = here->length;
19071 indent = (func = here->func) & STR_FUNC_INDENT;
19073 if ((c = nextc(p)) == -1) {
19076 if (!has_delayed_token(p)) {
19077 dispatch_scan_event(p, tSTRING_CONTENT);
19080 if ((
len = p->lex.pcur - p->lex.ptok) > 0) {
19081 if (!(func & STR_FUNC_REGEXP) && rb_enc_asciicompat(enc)) {
19085 rb_is_usascii_enc(p->enc) &&
19086 enc != rb_utf8_encoding()) {
19087 enc = rb_ascii8bit_encoding();
19090 rb_enc_str_buf_cat(p->delayed.token, p->lex.ptok,
len, enc);
19092 dispatch_delayed_token(p, tSTRING_CONTENT);
19096 heredoc_restore(p, &p->lex.strterm->u.heredoc);
19097 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
19100 SET_LEX_STATE(EXPR_END);
19101 return tSTRING_END;
19107 else if (p->heredoc_line_indent == -1) {
19112 p->heredoc_line_indent = 0;
19114 else if (whole_match_p(p, eos,
len, indent)) {
19115 dispatch_heredoc_end(p);
19117 heredoc_restore(p, &p->lex.strterm->u.heredoc);
19119 SET_LEX_STATE(EXPR_END);
19120 return tSTRING_END;
19123 if (!(func & STR_FUNC_EXPAND)) {
19125 ptr = RSTRING_PTR(p->lex.lastline);
19126 ptr_end = p->lex.pend;
19127 if (ptr_end > ptr) {
19128 switch (ptr_end[-1]) {
19130 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
19139 if (p->heredoc_indent > 0) {
19141 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
19143 p->heredoc_line_indent = 0;
19147 rb_str_cat(str, ptr, ptr_end - ptr);
19149 str = STR_NEW(ptr, ptr_end - ptr);
19150 if (!lex_eol_ptr_p(p, ptr_end)) rb_str_cat(str,
"\n", 1);
19152 if (p->heredoc_indent > 0) {
19155 if (nextc(p) == -1) {
19161 }
while (!whole_match_p(p, eos,
len, indent));
19167 enum yytokentype t = parser_peek_variable_name(p);
19168 if (p->heredoc_line_indent != -1) {
19169 if (p->heredoc_indent > p->heredoc_line_indent) {
19170 p->heredoc_indent = p->heredoc_line_indent;
19172 p->heredoc_line_indent = -1;
19181 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
19182 if (p->eofp)
goto error;
19186 if (c ==
'\\') p->heredoc_line_indent = -1;
19188 str = STR_NEW3(tok(p), toklen(p), enc, func);
19190 set_yylval_str(str);
19192 if (bol) nd_set_fl_newline(yylval.node);
19194 flush_string_content(p, enc);
19195 return tSTRING_CONTENT;
19197 tokadd(p, nextc(p));
19198 if (p->heredoc_indent > 0) {
19203 if ((c = nextc(p)) == -1)
goto error;
19204 }
while (!whole_match_p(p, eos,
len, indent));
19205 str = STR_NEW3(tok(p), toklen(p), enc, func);
19207 dispatch_heredoc_end(p);
19209 str = ripper_new_yylval(p, ripper_token2eventid(tSTRING_CONTENT),
19212 heredoc_restore(p, &p->lex.strterm->u.heredoc);
19214 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
19215 set_yylval_str(str);
19217 if (bol) nd_set_fl_newline(yylval.node);
19219 return tSTRING_CONTENT;
19229 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `%c' operator", WARN_I(c));
19232 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator", WARN_I(c));
19247 ID id = get_id(lhs);
19249 switch (id_type(
id)) {
19253# define ERR(mesg) yyerror0(mesg)
19255# define ERR(mesg) (dispatch2(param_error, WARN_S(mesg), lhs), ripper_error(p))
19258 ERR(
"formal argument cannot be a constant");
19261 ERR(
"formal argument cannot be an instance variable");
19264 ERR(
"formal argument cannot be a global variable");
19267 ERR(
"formal argument cannot be a class variable");
19270 ERR(
"formal argument must be local variable");
19274 shadowing_lvar(p,
id);
19281 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
19290 if (
len > 5 && name[nlen =
len - 5] ==
'-') {
19291 if (rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
19294 if (
len > 4 && name[nlen =
len - 4] ==
'-') {
19295 if (rb_memcicmp(name + nlen + 1,
"dos", 3) == 0)
19297 if (rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
19298 !(
len == 8 && rb_memcicmp(name,
"utf8-mac",
len) == 0))
19306parser_set_encode(
struct parser_params *p,
const char *name)
19308 int idx = rb_enc_find_index(name);
19313 excargs[1] = rb_sprintf(
"unknown encoding name: %s", name);
19315 excargs[0] = rb_eArgError;
19316 excargs[2] = rb_make_backtrace();
19317 rb_ary_unshift(excargs[2], rb_sprintf(
"%"PRIsVALUE
":%d", p->ruby_sourcefile_string, p->ruby_sourceline));
19318 rb_exc_raise(rb_make_exception(3, excargs));
19320 enc = rb_enc_from_index(idx);
19321 if (!rb_enc_asciicompat(enc)) {
19322 excargs[1] = rb_sprintf(
"%s is not ASCII compatible", rb_enc_name(enc));
19327 if (p->debug_lines) {
19328 VALUE lines = p->debug_lines;
19330 for (i = 0; i < n; ++i) {
19331 rb_enc_associate_index(
RARRAY_AREF(lines, i), idx);
19340 const char *ptr = p->lex.pbeg, *ptr_end = p->lex.pcur - 1;
19341 if (p->line_count != (p->has_shebang ? 2 : 1)) return 0;
19342 while (ptr < ptr_end) {
19343 if (!
ISSPACE(*ptr))
return 0;
19349typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
19350typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
19352static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
19355magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
19357 if (!comment_at_top(p)) {
19360 parser_set_encode(p, val);
19364parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
19367 case 't':
case 'T':
19372 case 'f':
case 'F':
19378 return parser_invalid_pragma_value(p, name, val);
19382parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
19384 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
19389parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
19391 int b = parser_get_bool(p, name, val);
19392 if (b >= 0) p->token_info_enabled = b;
19396parser_set_frozen_string_literal(
struct parser_params *p,
const char *name,
const char *val)
19400 if (p->token_seen) {
19401 rb_warning1(
"`%s' is ignored after any tokens", WARN_S(name));
19405 b = parser_get_bool(p, name, val);
19408 p->frozen_string_literal = b;
19412parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
19414 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
19415 if (*s ==
' ' || *s ==
'\t')
continue;
19416 if (*s ==
'#')
break;
19417 rb_warning1(
"`%s' is ignored unless in comment-only line", WARN_S(name));
19422 case 'n':
case 'N':
19424 p->ctxt.shareable_constant_value = shareable_none;
19428 case 'l':
case 'L':
19430 p->ctxt.shareable_constant_value = shareable_literal;
19434 case 'e':
case 'E':
19435 if (
STRCASECMP(val,
"experimental_copy") == 0) {
19436 p->ctxt.shareable_constant_value = shareable_copy;
19439 if (
STRCASECMP(val,
"experimental_everything") == 0) {
19440 p->ctxt.shareable_constant_value = shareable_everything;
19445 parser_invalid_pragma_value(p, name, val);
19448# if WARN_PAST_SCOPE
19450parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
19452 int b = parser_get_bool(p, name, val);
19453 if (b >= 0) p->past_scope_enabled = b;
19459 rb_magic_comment_setter_t func;
19460 rb_magic_comment_length_t length;
19464 {
"coding", magic_comment_encoding, parser_encode_length},
19465 {
"encoding", magic_comment_encoding, parser_encode_length},
19466 {
"frozen_string_literal", parser_set_frozen_string_literal},
19467 {
"shareable_constant_value", parser_set_shareable_constant_value},
19468 {
"warn_indent", parser_set_token_info},
19469# if WARN_PAST_SCOPE
19470 {
"warn_past_scope", parser_set_past_scope},
19475magic_comment_marker(
const char *str,
long len)
19482 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
19483 return str + i + 1;
19488 if (i + 1 >=
len)
return 0;
19489 if (str[i+1] !=
'-') {
19492 else if (str[i-1] !=
'-') {
19496 return str + i + 2;
19511 VALUE name = 0, val = 0;
19512 const char *beg, *end, *vbeg, *vend;
19513#define str_copy(_s, _p, _n) ((_s) \
19514 ? (void)(rb_str_resize((_s), (_n)), \
19515 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
19516 : (void)((_s) = STR_NEW((_p), (_n))))
19518 if (
len <= 7)
return FALSE;
19519 if (!!(beg = magic_comment_marker(str,
len))) {
19520 if (!(end = magic_comment_marker(beg, str +
len - beg)))
19524 len = end - beg - 3;
19534 for (;
len > 0 && *str; str++, --
len) {
19536 case '\'':
case '"':
case ':':
case ';':
19541 for (beg = str;
len > 0; str++, --
len) {
19543 case '\'':
case '"':
case ':':
case ';':
19554 if (!indicator)
return FALSE;
19558 do str++;
while (--
len > 0 &&
ISSPACE(*str));
19561 for (vbeg = ++str; --
len > 0 && *str !=
'"'; str++) {
19562 if (*str ==
'\\') {
19574 for (vbeg = str;
len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --
len, str++);
19578 while (
len > 0 && (*str ==
';' ||
ISSPACE(*str))) --
len, str++;
19582 if (
len)
return FALSE;
19586 str_copy(name, beg, n);
19587 s = RSTRING_PTR(name);
19588 for (i = 0; i < n; ++i) {
19589 if (s[i] ==
'-') s[i] =
'_';
19592 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
19595 n = (*mc->length)(p, vbeg, n);
19597 str_copy(val, vbeg, n);
19598 (*mc->func)(p, mc->name, RSTRING_PTR(val));
19601 }
while (++mc < magic_comments + numberof(magic_comments));
19603 str_copy(val, vbeg, vend - vbeg);
19612set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
19615 const char *beg = str;
19619 if (send - str <= 6)
return;
19621 case 'C':
case 'c': str += 6;
continue;
19622 case 'O':
case 'o': str += 5;
continue;
19623 case 'D':
case 'd': str += 4;
continue;
19624 case 'I':
case 'i': str += 3;
continue;
19625 case 'N':
case 'n': str += 2;
continue;
19626 case 'G':
case 'g': str += 1;
continue;
19627 case '=':
case ':':
19641 if (++str >= send)
return;
19644 if (*str !=
'=' && *str !=
':')
return;
19649 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
19650 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
19651 parser_set_encode(p, RSTRING_PTR(s));
19652 rb_str_resize(s, 0);
19658 int c = nextc0(p, FALSE);
19662 if (peek(p,
'!')) p->has_shebang = 1;
19665 if (!lex_eol_n_p(p, 2) &&
19666 (
unsigned char)p->lex.pcur[0] == 0xbb &&
19667 (
unsigned char)p->lex.pcur[1] == 0xbf) {
19668 p->enc = rb_utf8_encoding();
19671 if (p->debug_lines) {
19672 rb_enc_associate(p->lex.lastline, p->enc);
19675 p->lex.pbeg = p->lex.pcur;
19684 p->enc = rb_enc_get(p->lex.lastline);
19688#define ambiguous_operator(tok, op, syn) ( \
19689 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
19690 rb_warning0("even though it seems like "syn""))
19692#define ambiguous_operator(tok, op, syn) \
19693 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
19695#define warn_balanced(tok, op, syn) ((void) \
19696 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
19697 space_seen && !ISSPACE(c) && \
19698 (ambiguous_operator(tok, op, syn), 0)), \
19699 (enum yytokentype)(tok))
19702parse_rational(
struct parser_params *p,
char *str,
int len,
int seen_point)
19705 char *point = &str[seen_point];
19706 size_t fraclen =
len-seen_point-1;
19707 memmove(point, point+1, fraclen+1);
19708 v = rb_cstr_to_inum(str, 10, FALSE);
19709 return rb_rational_new(v, rb_int_positive_pow(10, fraclen));
19712static enum yytokentype
19715 yyerror0(
"numeric literal without digits");
19716 if (peek(p,
'_')) nextc(p);
19718 return set_integer_literal(p,
INT2FIX(0), 0);
19721static enum yytokentype
19724 int is_float, seen_point, seen_e, nondigit;
19727 is_float = seen_point = seen_e = nondigit = 0;
19728 SET_LEX_STATE(EXPR_END);
19730 if (c ==
'-' || c ==
'+') {
19735 int start = toklen(p);
19737 if (c ==
'x' || c ==
'X') {
19743 if (nondigit)
break;
19750 }
while ((c = nextc(p)) != -1);
19754 if (toklen(p) == start) {
19755 return no_digits(p);
19757 else if (nondigit)
goto trailing_uc;
19758 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19759 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 16, FALSE), suffix);
19761 if (c ==
'b' || c ==
'B') {
19764 if (c ==
'0' || c ==
'1') {
19767 if (nondigit)
break;
19771 if (c !=
'0' && c !=
'1')
break;
19774 }
while ((c = nextc(p)) != -1);
19778 if (toklen(p) == start) {
19779 return no_digits(p);
19781 else if (nondigit)
goto trailing_uc;
19782 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19783 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 2, FALSE), suffix);
19785 if (c ==
'd' || c ==
'D') {
19791 if (nondigit)
break;
19798 }
while ((c = nextc(p)) != -1);
19802 if (toklen(p) == start) {
19803 return no_digits(p);
19805 else if (nondigit)
goto trailing_uc;
19806 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19807 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 10, FALSE), suffix);
19813 if (c ==
'o' || c ==
'O') {
19816 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
19817 return no_digits(p);
19820 if (c >=
'0' && c <=
'7') {
19825 if (nondigit)
break;
19829 if (c <
'0' || c >
'9')
break;
19830 if (c >
'7')
goto invalid_octal;
19833 }
while ((c = nextc(p)) != -1);
19834 if (toklen(p) > start) {
19837 if (nondigit)
goto trailing_uc;
19838 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19839 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 8, FALSE), suffix);
19846 if (c >
'7' && c <=
'9') {
19848 yyerror0(
"Invalid octal digit");
19850 else if (c ==
'.' || c ==
'e' || c ==
'E') {
19855 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19856 return set_integer_literal(p,
INT2FIX(0), suffix);
19862 case '0':
case '1':
case '2':
case '3':
case '4':
19863 case '5':
case '6':
case '7':
case '8':
case '9':
19869 if (nondigit)
goto trailing_uc;
19870 if (seen_point || seen_e) {
19875 if (c0 == -1 || !
ISDIGIT(c0)) {
19881 seen_point = toklen(p);
19900 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
19906 tokadd(p, nondigit);
19910 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
19914 if (nondigit)
goto decode_num;
19928 literal_flush(p, p->lex.pcur - 1);
19929 YYLTYPE loc = RUBY_INIT_YYLLOC();
19930 compile_error(p,
"trailing `%c' in number", nondigit);
19931 parser_show_error_line(p, &loc);
19935 enum yytokentype
type = tFLOAT;
19938 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
19939 if (suffix & NUM_SUFFIX_R) {
19941 v = parse_rational(p, tok(p), toklen(p), seen_point);
19944 double d =
strtod(tok(p), 0);
19945 if (
errno == ERANGE) {
19946 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
19951 return set_number_literal(p, v,
type, suffix);
19953 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19954 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 10, FALSE), suffix);
19957static enum yytokentype
19965 SET_LEX_STATE(EXPR_VALUE);
19970 compile_error(p,
"incomplete character syntax");
19973 if (rb_enc_isspace(c, p->enc)) {
19975 int c2 = escaped_control_code(c);
19977 WARN_SPACE_CHAR(c2,
"?");
19982 SET_LEX_STATE(EXPR_VALUE);
19987 if (!parser_isascii(p)) {
19988 if (tokadd_mbchar(p, c) == -1)
return 0;
19990 else if ((rb_enc_isalnum(c, p->enc) || c ==
'_') &&
19991 !lex_eol_p(p) && is_identchar(p, p->lex.pcur, p->lex.pend, p->enc)) {
19993 const char *start = p->lex.pcur - 1, *ptr = start;
19995 int n = parser_precise_mbclen(p, ptr);
19996 if (n < 0)
return -1;
19998 }
while (!lex_eol_ptr_p(p, ptr) && is_identchar(p, ptr, p->lex.pend, p->enc));
19999 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
20000 " a conditional operator, put a space after `?'",
20001 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
20005 else if (c ==
'\\') {
20006 if (peek(p,
'u')) {
20008 enc = rb_utf8_encoding();
20009 tokadd_utf8(p, &enc, -1, 0, 0);
20011 else if (!
ISASCII(c = peekc(p))) {
20013 if (tokadd_mbchar(p, c) == -1)
return 0;
20016 c = read_escape(p, 0);
20024 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
20025 set_yylval_str(lit);
20026 SET_LEX_STATE(EXPR_END);
20030static enum yytokentype
20031parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
20034 const char *ptok = p->lex.pcur;
20042 if (c == -1)
goto unterminated;
20045 if (!
ISASCII(c))
goto unknown;
20050 if (rb_enc_isalnum(term, p->enc) || !parser_isascii(p)) {
20053 c = parser_precise_mbclen(p, p->lex.pcur);
20054 if (c < 0)
return 0;
20056 yyerror0(
"unknown type of %string");
20062 compile_error(p,
"unterminated quoted string meets end of file");
20066 if (term ==
'(') term =
')';
20067 else if (term ==
'[') term =
']';
20068 else if (term ==
'{') term =
'}';
20069 else if (term ==
'<') term =
'>';
20072 p->lex.ptok = ptok-1;
20075 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
20076 return tSTRING_BEG;
20079 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
20080 return tSTRING_BEG;
20083 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
20087 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
20088 return tQWORDS_BEG;
20091 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
20092 return tSYMBOLS_BEG;
20095 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
20096 return tQSYMBOLS_BEG;
20099 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
20100 return tXSTRING_BEG;
20103 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
20104 return tREGEXP_BEG;
20107 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
20108 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
20112 yyerror0(
"unknown type of %string");
20116 if ((c = nextc(p)) ==
'=') {
20117 set_yylval_id(
'%');
20118 SET_LEX_STATE(EXPR_BEG);
20121 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
20124 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20126 return warn_balanced(
'%',
"%%",
"string literal");
20133 if (tokadd_mbchar(p, c) == -1)
return -1;
20135 }
while (parser_is_identchar(p));
20143 ID ident = TOK_INTERN();
20145 set_yylval_name(ident);
20155 unsigned long n = ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &
len, &overflow);
20156 const unsigned long nth_ref_max =
20161 if (overflow || n > nth_ref_max) {
20163 rb_warn1(
"`%s' is too big for a number variable, always nil", WARN_S(tok(p)));
20171static enum yytokentype
20172parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
20174 const char *ptr = p->lex.pcur;
20177 SET_LEX_STATE(EXPR_END);
20178 p->lex.ptok = ptr - 1;
20184 if (parser_is_identchar(p)) {
20216 if (parser_is_identchar(p)) {
20217 if (tokadd_mbchar(p, c) == -1)
return 0;
20225 set_yylval_name(TOK_INTERN());
20232 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
20237 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
20240 case '1':
case '2':
case '3':
20241 case '4':
case '5':
case '6':
20242 case '7':
case '8':
case '9':
20247 }
while (c != -1 &&
ISDIGIT(c));
20249 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
20251 c = parse_numvar(p);
20252 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
20256 if (!parser_is_identchar(p)) {
20257 YYLTYPE loc = RUBY_INIT_YYLLOC();
20259 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
20263 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
20265 parser_show_error_line(p, &loc);
20266 set_yylval_noname();
20274 if (tokadd_ident(p, c))
return 0;
20275 SET_LEX_STATE(EXPR_END);
20276 if (VALID_SYMNAME_P(tok(p), toklen(p), p->enc, ID_GLOBAL)) {
20280 compile_error(p,
"`%.*s' is not allowed as a global variable name", toklen(p), tok(p));
20281 set_yylval_noname();
20290 if (n < 0)
return false;
20292 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
20295 if (p->max_numparam == ORDINAL_PARAM) {
20296 compile_error(p,
"ordinary parameter is defined");
20299 struct vtable *args = p->lvtbl->args;
20300 if (p->max_numparam < n) {
20301 p->max_numparam = n;
20303 while (n > args->pos) {
20304 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
20310static enum yytokentype
20311parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
20313 const char *ptr = p->lex.pcur;
20314 enum yytokentype result = tIVAR;
20315 register int c = nextc(p);
20318 p->lex.ptok = ptr - 1;
20326 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
20327 if (c == -1 || !parser_is_identchar(p)) {
20329 RUBY_SET_YYLLOC(loc);
20330 if (result == tIVAR) {
20331 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
20334 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
20336 parser_show_error_line(p, &loc);
20337 set_yylval_noname();
20338 SET_LEX_STATE(EXPR_END);
20343 RUBY_SET_YYLLOC(loc);
20344 if (result == tIVAR) {
20345 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
20348 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
20350 parser_show_error_line(p, &loc);
20351 set_yylval_noname();
20352 SET_LEX_STATE(EXPR_END);
20356 if (tokadd_ident(p, c))
return 0;
20361static enum yytokentype
20364 enum yytokentype result;
20366 const enum lex_state_e last_state = p->lex.state;
20368 int enforce_keyword_end = 0;
20372 if (tokadd_mbchar(p, c) == -1)
return 0;
20374 }
while (parser_is_identchar(p));
20375 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
20379 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
20380 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
20381 result = tIDENTIFIER;
20385 result = tCONSTANT;
20390 if (IS_LABEL_POSSIBLE()) {
20391 if (IS_LABEL_SUFFIX(0)) {
20392 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
20394 set_yylval_name(TOK_INTERN());
20400 if (!
NIL_P(peek_end_expect_token_locations(p))) {
20402 int lineno, column;
20403 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
20405 end_loc = peek_end_expect_token_locations(p);
20406 lineno =
NUM2INT(rb_ary_entry(end_loc, 0));
20407 column =
NUM2INT(rb_ary_entry(end_loc, 1));
20410 rb_parser_printf(p,
"enforce_keyword_end check. current: (%d, %d), peek: (%d, %d)\n",
20411 p->ruby_sourceline, beg_pos, lineno, column);
20414 if ((p->ruby_sourceline > lineno) && (beg_pos <= column)) {
20417 if ((IS_lex_state(EXPR_DOT)) && (kw = rb_reserved_word(tok(p), toklen(p))) && (kw && kw->id[0] == keyword_end)) {
20418 if (p->debug) rb_parser_printf(p,
"enforce_keyword_end is enabled\n");
20419 enforce_keyword_end = 1;
20429 kw = rb_reserved_word(tok(p), toklen(p));
20431 enum lex_state_e state = p->lex.state;
20432 if (IS_lex_state_for(state, EXPR_FNAME)) {
20433 SET_LEX_STATE(EXPR_ENDFN);
20434 set_yylval_name(rb_intern2(tok(p), toklen(p)));
20437 SET_LEX_STATE(kw->state);
20438 if (IS_lex_state(EXPR_BEG)) {
20439 p->command_start = TRUE;
20441 if (kw->id[0] == keyword_do) {
20442 if (lambda_beginning_p()) {
20443 p->lex.lpar_beg = -1;
20444 return keyword_do_LAMBDA;
20446 if (COND_P())
return keyword_do_cond;
20447 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
20448 return keyword_do_block;
20451 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS)))
20454 if (kw->id[0] != kw->id[1])
20455 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
20461 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
20463 SET_LEX_STATE(EXPR_CMDARG);
20466 SET_LEX_STATE(EXPR_ARG);
20469 else if (p->lex.state == EXPR_FNAME) {
20470 SET_LEX_STATE(EXPR_ENDFN);
20473 SET_LEX_STATE(EXPR_END);
20476 ident = tokenize_ident(p);
20477 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
20478 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
20479 (result == tIDENTIFIER) &&
20480 (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) {
20481 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
20492 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
20496static enum yytokentype
20500 int space_seen = 0;
20503 enum lex_state_e last_state;
20504 int fallthru = FALSE;
20505 int token_seen = p->token_seen;
20507 if (p->lex.strterm) {
20508 if (strterm_is_heredoc(p->lex.strterm)) {
20510 return here_document(p, &p->lex.strterm->u.heredoc);
20514 return parse_string(p, &p->lex.strterm->u.literal);
20517 cmd_state = p->command_start;
20518 p->command_start = FALSE;
20519 p->token_seen = TRUE;
20524 last_state = p->lex.state;
20525 switch (c = nextc(p)) {
20532 if (!
NIL_P(p->end_expect_token_locations) &&
RARRAY_LEN(p->end_expect_token_locations) > 0) {
20533 pop_end_expect_token_locations(p);
20534 RUBY_SET_YYLLOC_OF_DUMMY_END(*p->yylloc);
20539 RUBY_SET_YYLLOC(*p->yylloc);
20540 return END_OF_INPUT;
20546 case ' ':
case '\t':
case '\f':
20549 while ((c = nextc(p))) {
20554 case ' ':
case '\t':
case '\f':
20563 dispatch_scan_event(p, tSP);
20570 p->token_seen = token_seen;
20572 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
20573 if (comment_at_top(p)) {
20574 set_file_encoding(p, p->lex.pcur, p->lex.pend);
20578 dispatch_scan_event(p, tCOMMENT);
20582 p->token_seen = token_seen;
20583 VALUE prevline = p->lex.lastline;
20584 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
20585 !IS_lex_state(EXPR_LABELED));
20586 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
20588 dispatch_scan_event(p, tIGNORED_NL);
20591 if (!c && p->ctxt.in_kwarg) {
20592 goto normal_newline;
20597 switch (c = nextc(p)) {
20598 case ' ':
case '\t':
case '\f':
case '\r':
20605 dispatch_scan_event(p, tSP);
20611 dispatch_delayed_token(p, tIGNORED_NL);
20612 if (peek(p,
'.') == (c ==
'&')) {
20614 dispatch_scan_event(p, tSP);
20619 p->ruby_sourceline--;
20620 p->lex.nextline = p->lex.lastline;
20621 set_lastline(p, prevline);
20626 RUBY_SET_YYLLOC(*p->yylloc);
20628 goto normal_newline;
20632 p->command_start = TRUE;
20633 SET_LEX_STATE(EXPR_BEG);
20637 if ((c = nextc(p)) ==
'*') {
20638 if ((c = nextc(p)) ==
'=') {
20639 set_yylval_id(idPow);
20640 SET_LEX_STATE(EXPR_BEG);
20644 if (IS_SPCARG(c)) {
20645 rb_warning0(
"`**' interpreted as argument prefix");
20648 else if (IS_BEG()) {
20652 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
20657 set_yylval_id(
'*');
20658 SET_LEX_STATE(EXPR_BEG);
20662 if (IS_SPCARG(c)) {
20663 rb_warning0(
"`*' interpreted as argument prefix");
20666 else if (IS_BEG()) {
20670 c = warn_balanced(
'*',
"*",
"argument prefix");
20673 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20678 if (IS_AFTER_OPERATOR()) {
20679 SET_LEX_STATE(EXPR_ARG);
20685 SET_LEX_STATE(EXPR_BEG);
20699 if (word_match_p(p,
"begin", 5)) {
20700 int first_p = TRUE;
20703 dispatch_scan_event(p, tEMBDOC_BEG);
20707 dispatch_scan_event(p, tEMBDOC);
20712 compile_error(p,
"embedded document meets end of file");
20713 return END_OF_INPUT;
20715 if (c ==
'=' && word_match_p(p,
"end", 3)) {
20721 dispatch_scan_event(p, tEMBDOC_END);
20726 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20727 if ((c = nextc(p)) ==
'=') {
20728 if ((c = nextc(p)) ==
'=') {
20737 else if (c ==
'>') {
20746 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
20748 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
20749 enum yytokentype token = heredoc_identifier(p);
20750 if (token)
return token < 0 ? 0 : token;
20752 if (IS_AFTER_OPERATOR()) {
20753 SET_LEX_STATE(EXPR_ARG);
20756 if (IS_lex_state(EXPR_CLASS))
20757 p->command_start = TRUE;
20758 SET_LEX_STATE(EXPR_BEG);
20761 if ((c = nextc(p)) ==
'>') {
20768 if ((c = nextc(p)) ==
'=') {
20769 set_yylval_id(idLTLT);
20770 SET_LEX_STATE(EXPR_BEG);
20774 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
20780 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20781 if ((c = nextc(p)) ==
'=') {
20785 if ((c = nextc(p)) ==
'=') {
20786 set_yylval_id(idGTGT);
20787 SET_LEX_STATE(EXPR_BEG);
20797 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
20798 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
20799 p->lex.ptok = p->lex.pcur-1;
20800 return tSTRING_BEG;
20803 if (IS_lex_state(EXPR_FNAME)) {
20804 SET_LEX_STATE(EXPR_ENDFN);
20807 if (IS_lex_state(EXPR_DOT)) {
20809 SET_LEX_STATE(EXPR_CMDARG);
20811 SET_LEX_STATE(EXPR_ARG);
20814 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
20815 return tXSTRING_BEG;
20818 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
20819 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
20820 p->lex.ptok = p->lex.pcur-1;
20821 return tSTRING_BEG;
20824 return parse_qmark(p, space_seen);
20827 if ((c = nextc(p)) ==
'&') {
20828 SET_LEX_STATE(EXPR_BEG);
20829 if ((c = nextc(p)) ==
'=') {
20830 set_yylval_id(idANDOP);
20831 SET_LEX_STATE(EXPR_BEG);
20837 else if (c ==
'=') {
20838 set_yylval_id(
'&');
20839 SET_LEX_STATE(EXPR_BEG);
20842 else if (c ==
'.') {
20843 set_yylval_id(idANDDOT);
20844 SET_LEX_STATE(EXPR_DOT);
20848 if (IS_SPCARG(c)) {
20850 (c = peekc_n(p, 1)) == -1 ||
20851 !(c ==
'\'' || c ==
'"' ||
20852 is_identchar(p, (p->lex.pcur+1), p->lex.pend, p->enc))) {
20853 rb_warning0(
"`&' interpreted as argument prefix");
20857 else if (IS_BEG()) {
20861 c = warn_balanced(
'&',
"&",
"argument prefix");
20863 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20867 if ((c = nextc(p)) ==
'|') {
20868 SET_LEX_STATE(EXPR_BEG);
20869 if ((c = nextc(p)) ==
'=') {
20870 set_yylval_id(idOROP);
20871 SET_LEX_STATE(EXPR_BEG);
20875 if (IS_lex_state_for(last_state, EXPR_BEG)) {
20883 set_yylval_id(
'|');
20884 SET_LEX_STATE(EXPR_BEG);
20887 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
20893 if (IS_AFTER_OPERATOR()) {
20894 SET_LEX_STATE(EXPR_ARG);
20902 set_yylval_id(
'+');
20903 SET_LEX_STATE(EXPR_BEG);
20906 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
20907 SET_LEX_STATE(EXPR_BEG);
20910 return parse_numeric(p,
'+');
20914 SET_LEX_STATE(EXPR_BEG);
20916 return warn_balanced(
'+',
"+",
"unary operator");
20920 if (IS_AFTER_OPERATOR()) {
20921 SET_LEX_STATE(EXPR_ARG);
20929 set_yylval_id(
'-');
20930 SET_LEX_STATE(EXPR_BEG);
20934 SET_LEX_STATE(EXPR_ENDFN);
20937 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
20938 SET_LEX_STATE(EXPR_BEG);
20941 return tUMINUS_NUM;
20945 SET_LEX_STATE(EXPR_BEG);
20947 return warn_balanced(
'-',
"-",
"unary operator");
20950 int is_beg = IS_BEG();
20951 SET_LEX_STATE(EXPR_BEG);
20952 if ((c = nextc(p)) ==
'.') {
20953 if ((c = nextc(p)) ==
'.') {
20954 if (p->ctxt.in_argdef) {
20955 SET_LEX_STATE(EXPR_ENDARG);
20958 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
20959 rb_warn0(
"... at EOL, should be parenthesized?");
20961 else if (p->lex.lpar_beg >= 0 && p->lex.lpar_beg+1 == p->lex.paren_nest) {
20962 if (IS_lex_state_for(last_state, EXPR_LABEL))
20965 return is_beg ? tBDOT3 : tDOT3;
20968 return is_beg ? tBDOT2 : tDOT2;
20972 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
20973 parse_numeric(p,
'.');
20975 yyerror0(
"unexpected fraction part after numeric literal");
20978 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
20980 SET_LEX_STATE(EXPR_END);
20981 p->lex.ptok = p->lex.pcur;
20984 set_yylval_id(
'.');
20985 SET_LEX_STATE(EXPR_DOT);
20989 case '0':
case '1':
case '2':
case '3':
case '4':
20990 case '5':
case '6':
case '7':
case '8':
case '9':
20991 return parse_numeric(p, c);
20996 SET_LEX_STATE(EXPR_ENDFN);
20997 p->lex.paren_nest--;
21003 SET_LEX_STATE(EXPR_END);
21004 p->lex.paren_nest--;
21009 if (!p->lex.brace_nest--)
return tSTRING_DEND;
21012 SET_LEX_STATE(EXPR_END);
21013 p->lex.paren_nest--;
21019 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
21020 SET_LEX_STATE(EXPR_BEG);
21023 set_yylval_id(idCOLON2);
21024 SET_LEX_STATE(EXPR_DOT);
21027 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
21029 c = warn_balanced(
':',
":",
"symbol literal");
21030 SET_LEX_STATE(EXPR_BEG);
21035 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
21038 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
21044 SET_LEX_STATE(EXPR_FNAME);
21049 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
21050 return tREGEXP_BEG;
21052 if ((c = nextc(p)) ==
'=') {
21053 set_yylval_id(
'/');
21054 SET_LEX_STATE(EXPR_BEG);
21058 if (IS_SPCARG(c)) {
21059 arg_ambiguous(p,
'/');
21060 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
21061 return tREGEXP_BEG;
21063 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21064 return warn_balanced(
'/',
"/",
"regexp literal");
21067 if ((c = nextc(p)) ==
'=') {
21068 set_yylval_id(
'^');
21069 SET_LEX_STATE(EXPR_BEG);
21072 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21077 SET_LEX_STATE(EXPR_BEG);
21078 p->command_start = TRUE;
21082 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
21086 if (IS_AFTER_OPERATOR()) {
21087 if ((c = nextc(p)) !=
'@') {
21090 SET_LEX_STATE(EXPR_ARG);
21093 SET_LEX_STATE(EXPR_BEG);
21101 else if (!space_seen) {
21104 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
21107 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
21108 rb_warning0(
"parentheses after method name is interpreted as "
21109 "an argument list, not a decomposed argument");
21111 p->lex.paren_nest++;
21114 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
21118 p->lex.paren_nest++;
21119 if (IS_AFTER_OPERATOR()) {
21120 if ((c = nextc(p)) ==
']') {
21121 p->lex.paren_nest--;
21122 SET_LEX_STATE(EXPR_ARG);
21123 if ((c = nextc(p)) ==
'=') {
21130 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
21133 else if (IS_BEG()) {
21136 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
21139 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
21145 ++p->lex.brace_nest;
21146 if (lambda_beginning_p())
21148 else if (IS_lex_state(EXPR_LABELED))
21150 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
21152 else if (IS_lex_state(EXPR_ENDARG))
21156 if (c != tLBRACE) {
21157 p->command_start = TRUE;
21158 SET_LEX_STATE(EXPR_BEG);
21161 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
21163 ++p->lex.paren_nest;
21172 dispatch_scan_event(p, tSP);
21175 if (c ==
' ')
return tSP;
21181 return parse_percent(p, space_seen, last_state);
21184 return parse_gvar(p, last_state);
21187 return parse_atmark(p, last_state);
21190 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
21191 p->ruby__end__seen = 1;
21195 dispatch_scan_event(p, k__END__);
21197 return END_OF_INPUT;
21203 if (!parser_is_identchar(p)) {
21204 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
21213 return parse_ident(p, c, cmd_state);
21216static enum yytokentype
21219 enum yytokentype t;
21223 p->yylloc = yylloc;
21225 t = parser_yylex(p);
21227 if (has_delayed_token(p))
21228 dispatch_delayed_token(p, t);
21229 else if (t != END_OF_INPUT)
21230 dispatch_scan_event(p, t);
21235#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
21238node_new_internal(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment)
21240 NODE *n = rb_ast_newnode(p->ast,
type, size, alignment);
21242 rb_node_init(n,
type);
21250 nd_set_line(nd, loc->beg_pos.lineno);
21257 NODE *n = node_new_internal(p,
type, size, alignment);
21259 nd_set_loc(n, loc);
21260 nd_set_node_id(n, parser_get_node_id(p));
21264#define NODE_NEWNODE(node_type, type, loc) (type *)(node_newnode(p, node_type, sizeof(type), RUBY_ALIGNOF(type), loc))
21272 nd_tbl = local_tbl(p);
21274 n->nd_tbl = nd_tbl;
21275 n->nd_body = nd_body;
21276 n->nd_args = nd_args;
21285 n->nd_tbl = nd_tbl;
21286 n->nd_body = nd_body;
21287 n->nd_args = nd_args;
21296 n->nd_mid = nd_mid;
21297 n->nd_defn = nd_defn;
21306 n->nd_recv = nd_recv;
21307 n->nd_mid = nd_mid;
21308 n->nd_defn = nd_defn;
21317 n->nd_head = nd_head;
21318 n->nd_end = (
NODE *)n;
21328 n->nd_body = nd_body;
21329 n->nd_iter = nd_iter;
21338 n->nd_var = nd_var;
21355 n->nd_body = nd_body;
21364 n->nd_head = nd_head;
21365 n->nd_resq = nd_resq;
21366 n->nd_else = nd_else;
21375 n->nd_head = nd_head;
21376 n->nd_body = nd_body;
21377 n->nd_args = nd_args;
21386 n->nd_head = nd_head;
21388 n->nd_ensr = nd_ensr;
21397 n->nd_1st = nd_1st;
21398 n->nd_2nd = nd_2nd;
21407 n->nd_1st = nd_1st;
21408 n->nd_2nd = nd_2nd;
21417 n->nd_stts = nd_stts;
21425 n->nd_head = nd_head;
21434 n->nd_cond = nd_cond;
21435 n->nd_body = nd_body;
21436 n->nd_else = nd_else;
21445 n->nd_cond = nd_cond;
21446 n->nd_body = nd_body;
21447 n->nd_else = nd_else;
21456 NODE *scope = NEW_SCOPE(0, nd_body, loc);
21458 n->nd_cpath = nd_cpath;
21459 n->nd_body = scope;
21460 n->nd_super = nd_super;
21469 NODE *scope = NEW_SCOPE(0, nd_body, loc);
21471 n->nd_recv = nd_recv;
21472 n->nd_body = scope;
21481 NODE *scope = NEW_SCOPE(0, nd_body, loc);
21483 n->nd_cpath = nd_cpath;
21484 n->nd_body = scope;
21493 NODE *scope = NEW_SCOPE(nd_args, nd_body, loc);
21495 n->nd_body = scope;
21505 NODE *scope = NEW_SCOPE(nd_args, nd_body, loc);
21507 n->nd_body = scope;
21516 n->nd_head = nd_head;
21517 n->nd_body = nd_body;
21527 n->nd_body = nd_body;
21536 n->nd_head = nd_head;
21537 n->nd_body = nd_body;
21546 n->nd_head = nd_head;
21547 n->nd_body = nd_body;
21548 n->nd_next = nd_next;
21557 n->nd_head = nd_head;
21558 n->nd_body = nd_body;
21559 n->nd_next = nd_next;
21568 n->nd_cond = nd_cond;
21569 n->nd_body = nd_body;
21570 n->nd_state = nd_state;
21579 n->nd_cond = nd_cond;
21580 n->nd_body = nd_body;
21581 n->nd_state = nd_state;
21590 n->nd_head = nd_head;
21591 n->nd_mid = nd_mid;
21600 n->nd_mid = nd_mid;
21609 n->nd_beg = nd_beg;
21610 n->nd_end = nd_end;
21619 n->nd_beg = nd_beg;
21620 n->nd_end = nd_end;
21662 n->nd_args = nd_args;
21679 n->nd_recv = nd_recv;
21680 n->nd_value = nd_value;
21690 n->nd_recv = nd_recv;
21691 n->nd_value = nd_value;
21701 n->nd_head = nd_head;
21712 n->nd_head = nd_head;
21713 n->as.nd_alen = nd_alen;
21714 n->nd_next = nd_next;
21731 n->nd_head = nd_head;
21741 n->nd_head = nd_head;
21743 n->nd_args = nd_args;
21752 n->nd_vid = nd_vid;
21753 n->nd_value = nd_value;
21762 n->nd_vid = nd_vid;
21763 n->nd_value = nd_value;
21772 n->nd_vid = nd_vid;
21773 n->nd_value = nd_value;
21782 n->nd_vid = nd_vid;
21783 n->nd_value = nd_value;
21792 n->nd_vid = nd_vid;
21793 n->nd_value = nd_value;
21802 n->nd_recv = nd_recv;
21803 n->nd_mid = nd_mid;
21804 n->nd_index = index;
21805 n->nd_rvalue = rvalue;
21814 n->nd_recv = nd_recv;
21815 n->nd_value = nd_value;
21816 n->nd_vid = nd_vid;
21817 n->nd_mid = nd_mid;
21818 n->nd_aid = nd_aid;
21827 n->nd_head = nd_head;
21828 n->nd_value = nd_value;
21837 n->nd_head = nd_head;
21838 n->nd_value = nd_value;
21847 n->nd_vid = nd_vid;
21856 n->nd_vid = nd_vid;
21865 n->nd_vid = nd_vid;
21874 n->nd_vid = nd_vid;
21883 n->nd_vid = nd_vid;
21892 n->nd_vid = nd_vid;
21901 n->nd_nth = nd_nth;
21910 n->nd_nth = nd_nth;
21919 n->nd_lit = nd_lit;
21928 n->nd_lit = nd_lit;
21938 n->nd_lit = nd_lit;
21939 n->as.nd_alen = nd_alen;
21948 return rb_node_dstr_new0(p, nd_lit, 1, 0, loc);
21955 n->nd_lit = nd_lit;
21964 n->nd_lit = nd_lit;
21965 n->nd_alen = nd_alen;
21975 n->nd_lit = nd_lit;
21976 n->nd_alen = nd_alen;
21986 n->nd_body = nd_body;
21995 n->nd_recv = nd_recv;
21996 n->nd_mid = nd_mid;
21997 n->nd_args = nd_args;
22006 n->nd_recv = nd_recv;
22007 n->nd_mid = nd_mid;
22008 n->nd_args = nd_args;
22017 n->nd_mid = nd_mid;
22018 n->nd_args = nd_args;
22027 n->nd_recv = nd_recv;
22028 n->nd_mid = nd_mid;
22029 n->nd_args = nd_args;
22038 n->nd_mid = nd_mid;
22047 n->nd_body = nd_body;
22065 n->nd_pid = nd_pid;
22066 n->nd_plen = nd_plen;
22076 n->nd_body = nd_body;
22086 n->nd_body = nd_body;
22096 n->nd_1st = nd_1st;
22097 n->nd_2nd = nd_2nd;
22106 n->nd_head = nd_head;
22107 n->nd_body = nd_body;
22116 n->nd_head = nd_head;
22117 n->nd_body = nd_body;
22126 n->nd_head = nd_head;
22136 n->nd_body = nd_body;
22145 n->nd_1st = nd_1st;
22146 n->nd_2nd = nd_2nd;
22155 n->nd_alias = nd_alias;
22156 n->nd_orig = nd_orig;
22165 n->nd_undef = nd_undef;
22182 n->nd_head = nd_head;
22191 n->nd_body = nd_body;
22200 n->nd_recv = nd_recv;
22201 n->nd_mid = nd_mid;
22202 n->nd_args = nd_args;
22212 n->pre_args = pre_args;
22213 n->rest_arg = rest_arg;
22214 n->post_args = post_args;
22223 n->nd_pconst = nd_pconst;
22224 n->nd_pkwargs = nd_pkwargs;
22225 n->nd_pkwrestarg = nd_pkwrestarg;
22235 n->pre_rest_arg = pre_rest_arg;
22237 n->post_rest_arg = post_rest_arg;
22246 n->nd_vid = nd_vid;
22247 n->nd_value = nd_value;
22248 n->nd_else = nd_else;
22257 n->nd_head = nd_head;
22258 n->nd_value = nd_value;
22259 n->nd_aid = nd_aid;
22274static rb_node_ripper_t *
22277 rb_node_ripper_t *n = NODE_NEWNODE(NODE_RIPPER, rb_node_ripper_t, loc);
22278 n->nd_vid = nd_vid;
22279 n->nd_rval = nd_rval;
22280 n->nd_cval = nd_cval;
22285static rb_node_ripper_values_t *
22288 rb_node_ripper_values_t *n = NODE_NEWNODE(NODE_RIPPER_VALUES, rb_node_ripper_values_t, loc);
22289 n->nd_val1 = nd_val1;
22290 n->nd_val2 = nd_val2;
22291 n->nd_val3 = nd_val3;
22302 n->nd_stts = nd_stts;
22312 n->nd_stts = nd_stts;
22331 n->save.cur_arg = p->cur_arg;
22332 n->save.numparam_save = 0;
22333 n->save.max_numparam = 0;
22334 n->save.ctxt = p->ctxt;
22338 n->dot_or_colon =
Qnil;
22350 n->save.numparam_save = numparam_push(p);
22351 n->save.max_numparam = p->max_numparam;
22356static enum node_type
22357nodetype(
NODE *node)
22359 return (
enum node_type)nd_type(node);
22363nodeline(
NODE *node)
22365 return nd_line(node);
22369newline_node(
NODE *node)
22372 node = remove_begin(node);
22373 nd_set_fl_newline(node);
22383 nd_set_line(node, nd_line(orig));
22389 rb_compile_warning(p->ruby_sourcefile, nd_line(node),
"%s", mesg);
22395 rb_compile_warn(p->ruby_sourcefile, nd_line(node),
"%s", mesg);
22401 NODE *end, *h = head, *nd;
22403 if (tail == 0)
return head;
22405 if (h == 0)
return tail;
22406 switch (nd_type(h)) {
22408 h = end = NEW_BLOCK(head, &head->nd_loc);
22412 end = RNODE_BLOCK(h)->nd_end;
22416 nd = RNODE_BLOCK(end)->nd_head;
22417 switch (nd_type(nd)) {
22424 parser_warning(p, tail,
"statement not reached");
22432 if (!nd_type_p(tail, NODE_BLOCK)) {
22433 tail = NEW_BLOCK(tail, &tail->nd_loc);
22435 RNODE_BLOCK(end)->nd_next = tail;
22436 RNODE_BLOCK(h)->nd_end = RNODE_BLOCK(tail)->nd_end;
22437 nd_set_last_loc(head, nd_last_loc(tail));
22447 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
22448 if (RNODE_LIST(list)->nd_next) {
22449 last = RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end;
22455 RNODE_LIST(list)->as.nd_alen += 1;
22456 RNODE_LIST(last)->nd_next = NEW_LIST(item, &item->nd_loc);
22457 RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end = RNODE_LIST(last)->nd_next;
22459 nd_set_last_loc(list, nd_last_loc(item));
22466list_concat(
NODE *head,
NODE *tail)
22470 if (RNODE_LIST(head)->nd_next) {
22471 last = RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end;
22477 RNODE_LIST(head)->as.nd_alen += RNODE_LIST(tail)->as.nd_alen;
22478 RNODE_LIST(last)->nd_next = tail;
22479 if (RNODE_LIST(tail)->nd_next) {
22480 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = RNODE_LIST(RNODE_LIST(tail)->nd_next)->as.nd_end;
22483 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = tail;
22486 nd_set_last_loc(head, nd_last_loc(tail));
22494 if (
NIL_P(tail))
return 1;
22495 if (!rb_enc_compatible(head, tail)) {
22496 compile_error(p,
"string literal encodings differ (%s / %s)",
22497 rb_enc_name(rb_enc_get(head)),
22498 rb_enc_name(rb_enc_get(tail)));
22499 rb_str_resize(head, 0);
22500 rb_str_resize(tail, 0);
22503 rb_str_buf_append(head, tail);
22510 if (htype != NODE_DSTR)
return Qfalse;
22511 if (RNODE_DSTR(head)->nd_next) {
22512 head = RNODE_LIST(RNODE_LIST(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_head;
22513 if (!head || !nd_type_p(head, NODE_STR))
return Qfalse;
22515 const VALUE lit = RNODE_DSTR(head)->nd_lit;
22524 enum node_type htype;
22527 if (!head)
return tail;
22528 if (!tail)
return head;
22530 htype = nd_type(head);
22531 if (htype == NODE_EVSTR) {
22532 head = new_dstr(p, head, loc);
22535 if (p->heredoc_indent > 0) {
22538 head = str2dstr(p, head);
22540 return list_append(p, head, tail);
22545 switch (nd_type(tail)) {
22547 if ((lit = string_literal_head(p, htype, head)) !=
Qfalse) {
22551 lit = RNODE_DSTR(head)->nd_lit;
22553 if (htype == NODE_STR) {
22554 if (!literal_concat0(p, lit, RNODE_STR(tail)->nd_lit)) {
22556 rb_discard_node(p, head);
22557 rb_discard_node(p, tail);
22560 rb_discard_node(p, tail);
22563 list_append(p, head, tail);
22568 if (htype == NODE_STR) {
22569 if (!literal_concat0(p, RNODE_STR(head)->nd_lit, RNODE_DSTR(tail)->nd_lit))
22571 RNODE_DSTR(tail)->nd_lit = RNODE_STR(head)->nd_lit;
22572 rb_discard_node(p, head);
22575 else if (
NIL_P(RNODE_DSTR(tail)->nd_lit)) {
22577 RNODE_DSTR(head)->as.nd_alen += RNODE_DSTR(tail)->as.nd_alen - 1;
22578 if (!RNODE_DSTR(head)->nd_next) {
22579 RNODE_DSTR(head)->nd_next = RNODE_DSTR(tail)->nd_next;
22581 else if (RNODE_DSTR(tail)->nd_next) {
22582 RNODE_DSTR(RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_next = RNODE_DSTR(tail)->nd_next;
22583 RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end = RNODE_DSTR(RNODE_DSTR(tail)->nd_next)->as.nd_end;
22585 rb_discard_node(p, tail);
22587 else if ((lit = string_literal_head(p, htype, head)) !=
Qfalse) {
22588 if (!literal_concat0(p, lit, RNODE_DSTR(tail)->nd_lit))
22590 RNODE_DSTR(tail)->nd_lit =
Qnil;
22594 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));
22599 if (htype == NODE_STR) {
22600 head = str2dstr(p, head);
22601 RNODE_DSTR(head)->as.nd_alen = 1;
22603 list_append(p, head, tail);
22610nd_copy_flag(
NODE *new_node,
NODE *old_node)
22612 if (nd_fl_newline(old_node)) nd_set_fl_newline(new_node);
22613 nd_set_line(new_node, nd_line(old_node));
22614 new_node->nd_loc = old_node->nd_loc;
22615 new_node->node_id = old_node->node_id;
22622 nd_copy_flag(new_node, node);
22623 RNODE_DSTR(new_node)->nd_lit = RNODE_STR(node)->nd_lit;
22624 RNODE_DSTR(new_node)->as.nd_alen = 0;
22625 RNODE_DSTR(new_node)->nd_next = 0;
22626 RNODE_STR(node)->nd_lit = 0;
22634 if (nd_type_p(node, NODE_EVSTR)) {
22635 node = new_dstr(p, node, &node->nd_loc);
22646 switch (nd_type(node)) {
22648 return str2dstr(p, node);
22655 return NEW_EVSTR(head, loc);
22661 VALUE lit = STR_NEW0();
22662 NODE *dstr = NEW_DSTR(lit, loc);
22664 return list_append(p, dstr, node);
22674 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
22675 nd_set_line(expr, op_loc->beg_pos.lineno);
22684 opcall = NEW_OPCALL(recv,
id, 0, loc);
22685 nd_set_line(opcall, op_loc->beg_pos.lineno);
22692 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
22693 nd_set_line(qcall, op_loc->beg_pos.lineno);
22701 if (block) block_dup_check(p, args, block);
22702 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
22703 if (block) ret = method_add_block(p, ret, block, loc);
22708#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? RNODE_ONCE(node)->nd_body : node)
22711last_expr_once_body(
NODE *node)
22713 if (!node)
return 0;
22714 return nd_once_body(node);
22721 int line = op_loc->beg_pos.lineno;
22726 if ((n = last_expr_once_body(node1)) != 0) {
22727 switch (nd_type(n)) {
22730 NODE *match = NEW_MATCH2(node1, node2, loc);
22731 nd_set_line(match, line);
22736 if (RB_TYPE_P(RNODE_LIT(n)->nd_lit,
T_REGEXP)) {
22737 const VALUE lit = RNODE_LIT(n)->nd_lit;
22738 NODE *match = NEW_MATCH2(node1, node2, loc);
22739 RNODE_MATCH2(match)->nd_args = reg_named_capture_assign(p, lit, loc);
22740 nd_set_line(match, line);
22746 if ((n = last_expr_once_body(node2)) != 0) {
22749 switch (nd_type(n)) {
22751 if (!RB_TYPE_P(RNODE_LIT(n)->nd_lit,
T_REGEXP))
break;
22754 match3 = NEW_MATCH3(node2, node1, loc);
22759 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
22760 nd_set_line(n, line);
22764# if WARN_PAST_SCOPE
22768 struct vtable *past = p->lvtbl->past;
22770 if (vtable_included(past,
id))
return 1;
22781 NODE *outer = local->numparam.outer;
22782 NODE *inner = local->numparam.inner;
22783 if (outer || inner) {
22784 NODE *used = outer ? outer : inner;
22785 compile_error(p,
"numbered parameter is already used in\n"
22786 "%s:%d: %s block here",
22787 p->ruby_sourcefile, nd_line(used),
22788 outer ?
"outer" :
"inner");
22789 parser_show_error_line(p, &used->nd_loc);
22802 return NEW_SELF(loc);
22804 return NEW_NIL(loc);
22806 return NEW_TRUE(loc);
22807 case keyword_false:
22808 return NEW_FALSE(loc);
22809 case keyword__FILE__:
22811 VALUE file = p->ruby_sourcefile_string;
22815 file = rb_str_dup(file);
22816 node = NEW_STR(file, loc);
22820 case keyword__LINE__:
22821 return NEW_LIT(
INT2FIX(loc->beg_pos.lineno), loc);
22822 case keyword__ENCODING__:
22823 node = NEW_LIT(rb_enc_from_encoding(p->enc), loc);
22828 switch (id_type(
id)) {
22830 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
22831 if (NUMPARAM_ID_P(
id) && numparam_nested_p(p))
return 0;
22832 if (
id == p->cur_arg) {
22833 compile_error(p,
"circular argument reference - %"PRIsWARN, rb_id2str(
id));
22836 if (vidp) *vidp |= LVAR_USED;
22837 node = NEW_DVAR(
id, loc);
22840 if (local_id_ref(p,
id, &vidp)) {
22841 if (
id == p->cur_arg) {
22842 compile_error(p,
"circular argument reference - %"PRIsWARN, rb_id2str(
id));
22845 if (vidp) *vidp |= LVAR_USED;
22846 node = NEW_LVAR(
id, loc);
22849 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
22850 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
22851 if (numparam_nested_p(p))
return 0;
22852 node = NEW_DVAR(
id, loc);
22854 if (!local->numparam.current) local->numparam.current = node;
22857# if WARN_PAST_SCOPE
22859 rb_warning1(
"possible reference to past scope - %"PRIsWARN, rb_id2str(
id));
22863 if (dyna_in_block(p) &&
id == rb_intern(
"it")
22864 && !(DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev))
22865 && p->max_numparam != ORDINAL_PARAM) {
22866 rb_warn0(
"`it` calls without arguments will refer to the first block param in Ruby 3.4; use it() or self.it");
22868 return NEW_VCALL(
id, loc);
22870 return NEW_GVAR(
id, loc);
22872 return NEW_IVAR(
id, loc);
22874 return NEW_CONST(
id, loc);
22876 return NEW_CVAR(
id, loc);
22878 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
22886 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
22888 while (opts->nd_next) {
22889 opts = opts->nd_next;
22890 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
22892 opts->nd_next = opt;
22902 opt_arg_append(RNODE_OPT_ARG(kwlist), RNODE_OPT_ARG(kw));
22912 if (nd_type_p(n, NODE_BEGIN)) {
22913 n = RNODE_BEGIN(n)->nd_body;
22915 else if (nd_type_p(n, NODE_BLOCK) && RNODE_BLOCK(n)->nd_end == n) {
22916 n = RNODE_BLOCK(n)->nd_head;
22922 return NEW_DEFINED(n, loc);
22928 enum node_type
type = nd_type(symbol);
22931 nd_set_type(symbol, NODE_DSYM);
22934 nd_set_type(symbol, NODE_LIT);
22935 RB_OBJ_WRITTEN(p->ast,
Qnil, RNODE_LIT(symbol)->nd_lit = rb_str_intern(RNODE_LIT(symbol)->nd_lit));
22938 compile_error(p,
"unexpected node as symbol: %s", parser_node_name(
type));
22940 return list_append(p, symbols, symbol);
22951 node = NEW_LIT(reg_compile(p, STR_NEW0(), options), loc);
22955 switch (nd_type(node)) {
22958 VALUE src = RNODE_STR(node)->nd_lit;
22959 nd_set_type(node, NODE_LIT);
22960 nd_set_loc(node, loc);
22961 RB_OBJ_WRITTEN(p->ast,
Qnil, RNODE_LIT(node)->nd_lit = reg_compile(p, src, options));
22966 node = NEW_DSTR0(lit, 1, NEW_LIST(node, loc), loc);
22970 nd_set_type(node, NODE_DREGX);
22971 nd_set_loc(node, loc);
22972 RNODE_DREGX(node)->nd_cflag = options & RE_OPTION_MASK;
22973 if (!
NIL_P(RNODE_DREGX(node)->nd_lit)) reg_fragment_check(p, RNODE_DREGX(node)->nd_lit, options);
22974 for (list = RNODE_DREGX(prev = node)->nd_next; list; list = RNODE_LIST(list->nd_next)) {
22975 NODE *frag = list->nd_head;
22976 enum node_type
type = nd_type(frag);
22977 if (
type == NODE_STR || (
type == NODE_DSTR && !RNODE_DSTR(frag)->nd_next)) {
22978 VALUE tail = RNODE_STR(frag)->nd_lit;
22979 if (reg_fragment_check(p, tail, options) && prev && !
NIL_P(RNODE_DREGX(prev)->nd_lit)) {
22980 VALUE lit = prev == node ? RNODE_DREGX(prev)->nd_lit : RNODE_LIT(RNODE_LIST(prev)->nd_head)->nd_lit;
22981 if (!literal_concat0(p, lit, tail)) {
22982 return NEW_NIL(loc);
22984 rb_str_resize(tail, 0);
22985 RNODE_LIST(prev)->nd_next = list->nd_next;
22986 rb_discard_node(p, list->nd_head);
22987 rb_discard_node(p, (
NODE *)list);
22988 list = RNODE_LIST(prev);
22991 prev = (
NODE *)list;
22998 if (!RNODE_DREGX(node)->nd_next) {
22999 VALUE src = RNODE_DREGX(node)->nd_lit;
23000 VALUE re = reg_compile(p, src, options);
23003 if (options & RE_OPTION_ONCE) {
23004 node = NEW_ONCE(node, loc);
23015 return NEW_KW_ARG((k), loc);
23022 VALUE lit = STR_NEW0();
23023 NODE *xstr = NEW_XSTR(lit, loc);
23027 switch (nd_type(node)) {
23029 nd_set_type(node, NODE_XSTR);
23030 nd_set_loc(node, loc);
23033 nd_set_type(node, NODE_DXSTR);
23034 nd_set_loc(node, loc);
23037 node = NEW_DXSTR(
Qnil, 1, NEW_LIST(node, loc), loc);
23048 if (!arg || !p->case_labels)
return;
23050 lit = rb_node_case_when_optimizable_literal(arg);
23051 if (UNDEF_P(lit))
return;
23052 if (nd_type_p(arg, NODE_STR)) {
23056 if (
NIL_P(p->case_labels)) {
23057 p->case_labels = rb_obj_hide(rb_hash_new());
23060 VALUE line = rb_hash_lookup(p->case_labels, lit);
23061 if (!
NIL_P(line)) {
23062 rb_warning1(
"duplicated `when' clause with line %d is ignored",
23067 rb_hash_aset(p->case_labels, lit,
INT2NUM(p->ruby_sourceline));
23074 if (is_notop_id(
id)) {
23075 switch (
id & ID_SCOPE_MASK) {
23076 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
23079 if (dyna_in_block(p)) {
23080 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
23082 if (local_id(p,
id))
return 1;
23087 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
23094 VALUE src = 0, err = 0;
23096 if (ripper_is_node_yylval(p, re)) {
23097 src = RNODE_RIPPER(re)->nd_cval;
23098 re = RNODE_RIPPER(re)->nd_rval;
23100 if (ripper_is_node_yylval(p, opt)) {
23101 options = (int)RNODE_RIPPER(opt)->nd_vid;
23102 opt = RNODE_RIPPER(opt)->nd_rval;
23104 if (src &&
NIL_P(parser_reg_compile(p, src, options, &err))) {
23105 compile_error(p,
"%"PRIsVALUE, err);
23107 return dispatch2(regexp_literal, re, opt);
23111static inline enum lex_state_e
23112parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
23115 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
23117 return p->lex.state = ls;
23121static const char rb_parser_lex_state_names[][8] = {
23122 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
23123 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
23124 "LABEL",
"LABELED",
"FITEM",
23131 unsigned int mask = 1;
23132 static const char none[] =
"NONE";
23134 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
23135 if ((
unsigned)state & mask) {
23137 rb_str_cat(buf,
"|", 1);
23144 rb_str_cat(buf, none,
sizeof(none)-1);
23152 VALUE mesg = p->debug_buffer;
23154 if (!
NIL_P(mesg) && RSTRING_LEN(mesg)) {
23155 p->debug_buffer =
Qnil;
23156 rb_io_puts(1, &mesg, out);
23158 if (!
NIL_P(str) && RSTRING_LEN(str)) {
23159 rb_io_write(p->debug_output, str);
23164rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
23165 enum lex_state_e to,
int line)
23169 append_lex_state_name(p, from, mesg);
23171 append_lex_state_name(p, to, mesg);
23172 rb_str_catf(mesg,
" at line %d\n", line);
23173 flush_debug_buffer(p, p->debug_output, mesg);
23178rb_parser_lex_state_name(
struct parser_params *p,
enum lex_state_e state)
23180 return rb_fstring(append_lex_state_name(p, state,
rb_str_new(0, 0)));
23190 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
23191 for (; mask && !(stack & mask); mask >>= 1)
continue;
23192 for (; mask; mask >>= 1) rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
23197rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
23198 const char *name,
int line)
23200 VALUE mesg = rb_sprintf(
"%s: ", name);
23201 append_bitstack_value(p, stack, mesg);
23202 rb_str_catf(mesg,
" at line %d\n", line);
23203 flush_debug_buffer(p, p->debug_output, mesg);
23207rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
23213 rb_str_vcatf(mesg, fmt, ap);
23215 yyerror0(RSTRING_PTR(mesg));
23219 append_lex_state_name(p, p->lex.state, mesg);
23220 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
23221 rb_str_resize(mesg, 0);
23222 append_bitstack_value(p, p->cond_stack, mesg);
23223 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
23224 rb_str_resize(mesg, 0);
23225 append_bitstack_value(p, p->cmdarg_stack, mesg);
23226 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
23227 if (p->debug_output == rb_ractor_stdout())
23228 p->debug_output = rb_ractor_stderr();
23233rb_parser_set_pos(
YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
23235 yylloc->beg_pos.lineno = sourceline;
23236 yylloc->beg_pos.column = beg_pos;
23237 yylloc->end_pos.lineno = sourceline;
23238 yylloc->end_pos.column = end_pos;
23245 int sourceline = here->sourceline;
23246 int beg_pos = (int)here->offset - here->quote
23247 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
23248 int end_pos = (int)here->offset + here->length + here->quote;
23250 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
23256 yylloc->beg_pos.lineno = p->delayed.beg_line;
23257 yylloc->beg_pos.column = p->delayed.beg_col;
23258 yylloc->end_pos.lineno = p->delayed.end_line;
23259 yylloc->end_pos.column = p->delayed.end_col;
23267 int sourceline = p->ruby_sourceline;
23268 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
23269 int end_pos = (int)(p->lex.pend - p->lex.pbeg);
23270 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
23276 yylloc->end_pos = yylloc->beg_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.ptok - p->lex.pbeg);
23287 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
23293 int sourceline = p->ruby_sourceline;
23294 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
23295 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
23296 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
23303 if (!
id)
return -1;
23306 *err =
"Can't change the value of self";
23309 *err =
"Can't assign to nil";
23312 *err =
"Can't assign to true";
23314 case keyword_false:
23315 *err =
"Can't assign to false";
23317 case keyword__FILE__:
23318 *err =
"Can't assign to __FILE__";
23320 case keyword__LINE__:
23321 *err =
"Can't assign to __LINE__";
23323 case keyword__ENCODING__:
23324 *err =
"Can't assign to __ENCODING__";
23327 switch (id_type(
id)) {
23329 if (dyna_in_block(p)) {
23330 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
23331 compile_error(p,
"Can't assign to numbered parameter _%d",
23332 NUMPARAM_ID_TO_IDX(
id));
23335 if (dvar_curr(p,
id))
return NODE_DASGN;
23336 if (dvar_defined(p,
id))
return NODE_DASGN;
23337 if (local_id(p,
id))
return NODE_LASGN;
23342 if (!local_id(p,
id)) local_var(p,
id);
23346 case ID_GLOBAL:
return NODE_GASGN;
23347 case ID_INSTANCE:
return NODE_IASGN;
23349 if (!p->ctxt.in_def)
return NODE_CDECL;
23350 *err =
"dynamic constant assignment";
23352 case ID_CLASS:
return NODE_CVASGN;
23354 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set", rb_id2str(
id));
23363 const char *err = 0;
23364 int node_type = assignable0(p,
id, &err);
23365 switch (node_type) {
23366 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
23367 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
23368 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
23369 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
23370 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, loc);
23371 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
23373 if (err) yyerror1(loc, err);
23374 return NEW_ERROR(loc);
23380 const char *err = 0;
23381 assignable0(p, get_id(lhs), &err);
23382 if (err) lhs = assign_error(p, err, lhs);
23391 if (name == idUScore)
return 1;
23392 if (!is_local_id(name))
return 0;
23393 s = rb_id2str(name);
23395 return RSTRING_PTR(s)[0] ==
'_';
23401 if (dyna_in_block(p)) {
23402 if (dvar_curr(p, name)) {
23403 if (is_private_local_id(p, name))
return 1;
23404 yyerror0(
"duplicated argument name");
23406 else if (dvar_defined(p, name) || local_id(p, name)) {
23407 vtable_add(p->lvtbl->vars, name);
23408 if (p->lvtbl->used) {
23409 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
23415 if (local_id(p, name)) {
23416 if (is_private_local_id(p, name))
return 1;
23417 yyerror0(
"duplicated argument name");
23426 shadowing_lvar_0(p, name);
23434 if (!is_local_id(name)) {
23435 compile_error(p,
"invalid local variable - %"PRIsVALUE,
23439 if (!shadowing_lvar_0(p, name))
return;
23447 return NEW_ATTRASGN(recv, tASET, idx, loc);
23453 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
23454 compile_error(p,
"both block arg and actual block given");
23461 if (!CALL_Q_P(atype))
id = rb_id_attrset(
id);
23462 return NEW_ATTRASGN(recv,
id, 0, loc);
23468 switch (nd_type(node)) {
23470 compile_error(p,
"Can't set variable $%ld", RNODE_NTH_REF(node)->nd_nth);
23472 case NODE_BACK_REF:
23473 compile_error(p,
"Can't set variable $%c", (
int)RNODE_BACK_REF(node)->nd_nth);
23483 return dispatch2(assign_error, mesg, expr);
23491 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
23492 switch (nd_type(node1)) {
23494 return list_append(p, node1, node2);
23495 case NODE_BLOCK_PASS:
23496 RNODE_BLOCK_PASS(node1)->nd_head = arg_append(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
23497 node1->nd_loc.end_pos = RNODE_BLOCK_PASS(node1)->nd_head->nd_loc.end_pos;
23499 case NODE_ARGSPUSH:
23500 RNODE_ARGSPUSH(node1)->nd_body = list_append(p, NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, &RNODE_ARGSPUSH(node1)->nd_body->nd_loc), node2);
23501 node1->nd_loc.end_pos = RNODE_ARGSPUSH(node1)->nd_body->nd_loc.end_pos;
23502 nd_set_type(node1, NODE_ARGSCAT);
23505 if (!nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
23506 RNODE_ARGSCAT(node1)->nd_body = list_append(p, RNODE_ARGSCAT(node1)->nd_body, node2);
23507 node1->nd_loc.end_pos = RNODE_ARGSCAT(node1)->nd_body->nd_loc.end_pos;
23510 return NEW_ARGSPUSH(node1, node2, loc);
23516 if (!node2)
return node1;
23517 switch (nd_type(node1)) {
23518 case NODE_BLOCK_PASS:
23519 if (RNODE_BLOCK_PASS(node1)->nd_head)
23520 RNODE_BLOCK_PASS(node1)->nd_head = arg_concat(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
23522 RNODE_LIST(node1)->nd_head = NEW_LIST(node2, loc);
23524 case NODE_ARGSPUSH:
23525 if (!nd_type_p(node2, NODE_LIST))
break;
23526 RNODE_ARGSPUSH(node1)->nd_body = list_concat(NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, loc), node2);
23527 nd_set_type(node1, NODE_ARGSCAT);
23530 if (!nd_type_p(node2, NODE_LIST) ||
23531 !nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
23532 RNODE_ARGSCAT(node1)->nd_body = list_concat(RNODE_ARGSCAT(node1)->nd_body, node2);
23535 return NEW_ARGSCAT(node1, node2, loc);
23542 if ((n1 = splat_array(args)) != 0) {
23543 return list_append(p, n1, last_arg);
23545 return arg_append(p, args, last_arg, loc);
23552 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
23553 return list_concat(n1, rest_arg);
23555 return arg_concat(p, args, rest_arg, loc);
23559splat_array(
NODE* node)
23561 if (nd_type_p(node, NODE_SPLAT)) node = RNODE_SPLAT(node)->nd_head;
23562 if (nd_type_p(node, NODE_LIST))
return node;
23571 switch (nd_type(rhs)) {
23573 if (local_id_ref(p, RNODE_LASGN(rhs)->nd_vid, &vidp)) {
23574 if (vidp) *vidp |= LVAR_USED;
23578 if (dvar_defined_ref(p, RNODE_DASGN(rhs)->nd_vid, &vidp)) {
23579 if (vidp) *vidp |= LVAR_USED;
23584 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
23585 mark_lvar_used(p, rhs->nd_head);
23596 if (!nd_type_p(n, NODE_CALL)) {
23597 const YYLTYPE *loc = &n->nd_loc;
23599 if (RNODE_CDECL(n)->nd_vid) {
23600 path = rb_id2str(RNODE_CDECL(n)->nd_vid);
23603 n = RNODE_CDECL(n)->nd_else;
23604 path = rb_ary_new();
23605 for (; n && nd_type_p(n, NODE_COLON2); n = RNODE_COLON2(n)->nd_head) {
23606 rb_ary_push(path, rb_id2str(RNODE_COLON2(n)->nd_mid));
23608 if (n && nd_type_p(n, NODE_CONST)) {
23610 rb_ary_push(path, rb_id2str(RNODE_CONST(n)->nd_vid));
23612 else if (n && nd_type_p(n, NODE_COLON3)) {
23621 path = rb_fstring(path);
23623 *dest = n = NEW_LIT(path, loc);
23632 NODE *fcore = NEW_LIT(rb_mRubyVMFrozenCore, loc);
23635 return NEW_CALL(fcore, rb_intern(
"make_shareable_copy"),
23636 NEW_LIST(value, loc), loc);
23639 return NEW_CALL(fcore, rb_intern(
"make_shareable"),
23640 NEW_LIST(value, loc), loc);
23647 NODE *fcore = NEW_LIT(rb_mRubyVMFrozenCore, loc);
23648 NODE *args = NEW_LIST(value, loc);
23649 args = list_append(p, args, const_decl_path(p, dest));
23650 return NEW_CALL(fcore, rb_intern(
"ensure_shareable"), args, loc);
23653static int is_static_content(
NODE *node);
23658 if (!node)
return Qnil;
23659 enum node_type
type = nd_type(node);
23668 return RNODE_LIT(node)->nd_lit;
23674#ifndef SHAREABLE_BARE_EXPRESSION
23675#define SHAREABLE_BARE_EXPRESSION 1
23679shareable_literal_constant(
struct parser_params *p,
enum shareability shareable,
23682# define shareable_literal_constant_next(n) \
23683 shareable_literal_constant(p, shareable, dest, (n), &(n)->nd_loc, level+1)
23686 if (!value)
return 0;
23687 enum node_type
type = nd_type(value);
23696 if (shareable == shareable_literal) {
23697 value = NEW_CALL(value, idUMinus, 0, loc);
23702 lit = rb_fstring(RNODE_STR(value)->nd_lit);
23703 nd_set_type(value, NODE_LIT);
23708 lit = rb_ary_new();
23710 NODE *n = NEW_LIT(lit, loc);
23715 lit = rb_ary_new();
23716 for (
NODE *n = value; n; n = RNODE_LIST(n)->nd_next) {
23717 NODE *elt = RNODE_LIST(n)->nd_head;
23719 elt = shareable_literal_constant_next(elt);
23721 RNODE_LIST(n)->nd_head = elt;
23723 else if (
RTEST(lit)) {
23729 VALUE e = shareable_literal_value(p, elt);
23731 rb_ary_push(lit, e);
23742 if (!RNODE_HASH(value)->nd_brace)
return 0;
23743 lit = rb_hash_new();
23744 for (
NODE *n = RNODE_HASH(value)->nd_head; n; n = RNODE_LIST(RNODE_LIST(n)->nd_next)->nd_next) {
23745 NODE *key = RNODE_LIST(n)->nd_head;
23746 NODE *val = RNODE_LIST(RNODE_LIST(n)->nd_next)->nd_head;
23748 key = shareable_literal_constant_next(key);
23750 RNODE_LIST(n)->nd_head = key;
23752 else if (
RTEST(lit)) {
23753 rb_hash_clear(lit);
23758 val = shareable_literal_constant_next(val);
23760 RNODE_LIST(RNODE_LIST(n)->nd_next)->nd_head = val;
23762 else if (
RTEST(lit)) {
23763 rb_hash_clear(lit);
23768 VALUE k = shareable_literal_value(p, key);
23769 VALUE v = shareable_literal_value(p, val);
23770 if (!UNDEF_P(k) && !UNDEF_P(v)) {
23771 rb_hash_aset(lit, k, v);
23774 rb_hash_clear(lit);
23782 if (shareable == shareable_literal &&
23783 (SHAREABLE_BARE_EXPRESSION || level > 0)) {
23784 return ensure_shareable_node(p, dest, value, loc);
23790 if (!lit)
return 0;
23794 value = make_shareable_node(p, value,
false, loc);
23797 value = NEW_LIT(rb_ractor_make_shareable(lit), loc);
23802# undef shareable_literal_constant_next
23806shareable_constant_value(
struct parser_params *p,
enum shareability shareable,
23809 if (!value)
return 0;
23810 switch (shareable) {
23811 case shareable_none:
23814 case shareable_literal:
23816 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
23817 if (lit)
return lit;
23822 case shareable_copy:
23823 case shareable_everything:
23825 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
23826 if (lit)
return lit;
23827 return make_shareable_node(p, value, shareable == shareable_copy, loc);
23839 if (!lhs)
return 0;
23841 switch (nd_type(lhs)) {
23843 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
23852 set_nd_value(p, lhs, rhs);
23853 nd_set_loc(lhs, loc);
23856 case NODE_ATTRASGN:
23857 RNODE_ATTRASGN(lhs)->nd_args = arg_append(p, RNODE_ATTRASGN(lhs)->nd_args, rhs, loc);
23858 nd_set_loc(lhs, loc);
23872 NODE *void_node = 0, *vn;
23875 rb_warning0(
"empty expression");
23878 switch (nd_type(node)) {
23884 return void_node ? void_node : node;
23887 if (!RNODE_CASE3(node)->nd_body || !nd_type_p(RNODE_CASE3(node)->nd_body, NODE_IN)) {
23888 compile_error(p,
"unexpected node");
23891 if (RNODE_IN(RNODE_CASE3(node)->nd_body)->nd_body) {
23895 return void_node ? void_node : node;
23898 while (RNODE_BLOCK(node)->nd_next) {
23899 node = RNODE_BLOCK(node)->nd_next;
23901 node = RNODE_BLOCK(node)->nd_head;
23905 node = RNODE_BEGIN(node)->nd_body;
23910 if (!RNODE_IF(node)->nd_body) {
23913 else if (!RNODE_IF(node)->nd_else) {
23916 vn = value_expr_check(p, RNODE_IF(node)->nd_body);
23917 if (!vn)
return NULL;
23918 if (!void_node) void_node = vn;
23919 node = RNODE_IF(node)->nd_else;
23924 node = RNODE_AND(node)->nd_1st;
23930 mark_lvar_used(p, node);
23944 NODE *void_node = value_expr_check(p, node);
23946 yyerror1(&void_node->nd_loc,
"void value expression");
23956 const char *useless = 0;
23960 if (!node || !(node = nd_once_body(node)))
return;
23961 switch (nd_type(node)) {
23963 switch (RNODE_OPCALL(node)->nd_mid) {
23982 useless = rb_id2name(RNODE_OPCALL(node)->nd_mid);
23993 case NODE_BACK_REF:
23994 useless =
"a variable";
23997 useless =
"a constant";
24003 useless =
"a literal";
24028 useless =
"defined?";
24033 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
24040 NODE *
const n = node;
24042 if (!node)
return n;
24043 if (!nd_type_p(node, NODE_BLOCK))
return n;
24045 while (RNODE_BLOCK(node)->nd_next) {
24046 void_expr(p, RNODE_BLOCK(node)->nd_head);
24047 node = RNODE_BLOCK(node)->nd_next;
24053remove_begin(
NODE *node)
24055 NODE **n = &node, *n1 = node;
24056 while (n1 && nd_type_p(n1, NODE_BEGIN) && RNODE_BEGIN(n1)->nd_body) {
24057 *n = n1 = RNODE_BEGIN(n1)->nd_body;
24065 NODE *node = *body;
24068 *body = NEW_NIL(&NULL_LOC);
24071#define subnodes(type, n1, n2) \
24072 ((!type(node)->n1) ? (type(node)->n2 ? (body = &type(node)->n2, 1) : 0) : \
24073 (!type(node)->n2) ? (body = &type(node)->n1, 1) : \
24074 (reduce_nodes(p, &type(node)->n1), body = &type(node)->n2, 1))
24077 int newline = (int)(nd_fl_newline(node));
24078 switch (nd_type(node)) {
24084 *body = node = RNODE_RETURN(node)->nd_stts;
24085 if (newline && node) nd_set_fl_newline(node);
24088 *body = node = RNODE_BEGIN(node)->nd_body;
24089 if (newline && node) nd_set_fl_newline(node);
24092 body = &RNODE_BLOCK(RNODE_BLOCK(node)->nd_end)->nd_head;
24096 if (subnodes(RNODE_IF, nd_body, nd_else))
break;
24099 body = &RNODE_CASE(node)->nd_body;
24102 if (!subnodes(RNODE_WHEN, nd_body, nd_next))
goto end;
24105 if (!subnodes(RNODE_ENSURE, nd_head, nd_resq))
goto end;
24109 if (RNODE_RESCUE(node)->nd_else) {
24110 body = &RNODE_RESCUE(node)->nd_resq;
24113 if (!subnodes(RNODE_RESCUE, nd_head, nd_resq))
goto end;
24119 if (newline && node) nd_set_fl_newline(node);
24126is_static_content(
NODE *node)
24128 if (!node)
return 1;
24129 switch (nd_type(node)) {
24131 if (!(node = RNODE_HASH(node)->nd_head))
break;
24134 if (!is_static_content(RNODE_LIST(node)->nd_head))
return 0;
24135 }
while ((node = RNODE_LIST(node)->nd_next) != 0);
24152 switch (nd_type(node)) {
24166 if (!get_nd_value(p, node))
return 1;
24167 if (is_static_content(get_nd_value(p, node))) {
24169 parser_warn(p, get_nd_value(p, node),
"found `= literal' in conditional, should be ==");
24180#define SWITCH_BY_COND_TYPE(t, w, arg) do { \
24182 case COND_IN_OP: break; \
24183 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
24184 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
24193 enum node_type
type;
24195 if (node == 0)
return 0;
24197 type = nd_type(node);
24199 if (
type == NODE_LIT &&
FIXNUM_P(RNODE_LIT(node)->nd_lit)) {
24200 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
24201 ID lineno = rb_intern(
"$.");
24202 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
24204 return cond0(p, node, COND_IN_FF, loc,
true);
24210 if (node == 0)
return 0;
24211 if (!(node = nd_once_body(node)))
return 0;
24212 assign_in_cond(p, node);
24214 switch (nd_type(node)) {
24216 RNODE_BEGIN(node)->nd_body = cond0(p, RNODE_BEGIN(node)->nd_body,
type, loc, top);
24222 SWITCH_BY_COND_TYPE(
type, warn,
"string ");
24226 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning,
"regex ");
24228 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
24232 NODE *end = RNODE_BLOCK(node)->nd_end;
24233 NODE **expr = &RNODE_BLOCK(end)->nd_head;
24234 if (top) top = node == end;
24235 *expr = cond0(p, *expr,
type, loc, top);
24241 RNODE_AND(node)->nd_1st = cond0(p, RNODE_AND(node)->nd_1st, COND_IN_COND, loc,
true);
24242 RNODE_AND(node)->nd_2nd = cond0(p, RNODE_AND(node)->nd_2nd, COND_IN_COND, loc,
true);
24248 RNODE_DOT2(node)->nd_beg = range_op(p, RNODE_DOT2(node)->nd_beg, loc);
24249 RNODE_DOT2(node)->nd_end = range_op(p, RNODE_DOT2(node)->nd_end, loc);
24250 if (nd_type_p(node, NODE_DOT2)) nd_set_type(node,NODE_FLIP2);
24251 else if (nd_type_p(node, NODE_DOT3)) nd_set_type(node, NODE_FLIP3);
24256 SWITCH_BY_COND_TYPE(
type, warning,
"symbol ");
24260 if (RB_TYPE_P(RNODE_LIT(node)->nd_lit,
T_REGEXP)) {
24261 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ");
24262 nd_set_type(node, NODE_MATCH);
24264 else if (RNODE_LIT(node)->nd_lit ==
Qtrue ||
24265 RNODE_LIT(node)->nd_lit ==
Qfalse) {
24268 else if (
SYMBOL_P(RNODE_LIT(node)->nd_lit)) {
24272 SWITCH_BY_COND_TYPE(
type, warning,
"");
24283 if (node == 0)
return 0;
24284 return cond0(p, node, COND_IN_COND, loc,
true);
24290 if (node == 0)
return 0;
24291 return cond0(p, node, COND_IN_OP, loc,
true);
24298 return NEW_NIL(&loc);
24304 if (!cc)
return right;
24305 cc = cond0(p, cc, COND_IN_COND, loc,
true);
24306 return newline_node(NEW_IF(cc, left, right, loc));
24312 if (!cc)
return right;
24313 cc = cond0(p, cc, COND_IN_COND, loc,
true);
24314 return newline_node(NEW_UNLESS(cc, left, right, loc));
24317#define NEW_AND_OR(type, f, s, loc) (type == NODE_AND ? NEW_AND(f,s,loc) : NEW_OR(f,s,loc))
24323 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
24326 if (left && nd_type_p(left,
type)) {
24327 NODE *node = left, *second;
24328 while ((second = RNODE_AND(node)->nd_2nd) != 0 && nd_type_p(second,
type)) {
24331 RNODE_AND(node)->nd_2nd = NEW_AND_OR(
type, second, right, loc);
24332 nd_set_line(RNODE_AND(node)->nd_2nd, op_loc->beg_pos.lineno);
24333 left->nd_loc.end_pos = loc->end_pos;
24336 op = NEW_AND_OR(
type, left, right, loc);
24337 nd_set_line(op, op_loc->beg_pos.lineno);
24346 if (nd_type_p(node, NODE_BLOCK_PASS)) {
24347 compile_error(p,
"block argument should not be given");
24355 no_blockarg(p, node);
24356 if (nd_type_p(node, NODE_LIST) && !RNODE_LIST(node)->nd_next) {
24357 node = RNODE_LIST(node)->nd_head;
24366 if (node) no_blockarg(p, node);
24368 return NEW_YIELD(node, loc);
24387 bignum_negate(lit);
24388 lit = rb_big_norm(lit);
24391 rational_set_num(lit, negate_lit(p, rational_get_num(lit)));
24394 rcomplex_set_real(lit, negate_lit(p, rcomplex_get_real(lit)));
24395 rcomplex_set_imag(lit, negate_lit(p, rcomplex_get_imag(lit)));
24402 rb_parser_fatal(p,
"unknown literal type (%s) passed to negate_lit",
24403 rb_builtin_class_name(lit));
24413 if (!node1)
return (
NODE *)node2;
24414 node2->nd_head = node1;
24415 nd_set_first_lineno(node2, nd_first_lineno(node1));
24416 nd_set_first_column(node2, nd_first_column(node1));
24417 return (
NODE *)node2;
24425 if (args->pre_args_num)
return false;
24426 if (args->post_args_num)
return false;
24427 if (args->rest_arg)
return false;
24428 if (args->opt_args)
return false;
24429 if (args->block_arg)
return false;
24430 if (args->kw_args)
return false;
24431 if (args->kw_rest_arg)
return false;
24440 if (args->forwarding) {
24442 yyerror1(&RNODE(tail)->nd_loc,
"... after rest argument");
24445 rest_arg = idFWD_REST;
24448 args->pre_args_num = pre_args ?
rb_long2int(pre_args->nd_plen) : 0;
24449 args->pre_init = pre_args ? pre_args->nd_next : 0;
24451 args->post_args_num = post_args ?
rb_long2int(post_args->nd_plen) : 0;
24452 args->post_init = post_args ? post_args->nd_next : 0;
24453 args->first_post_arg = post_args ? post_args->nd_pid : 0;
24455 args->rest_arg = rest_arg;
24457 args->opt_args = opt_args;
24459#ifdef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
24460 args->ruby2_keywords = args->forwarding;
24462 args->ruby2_keywords = 0;
24465 nd_set_loc(RNODE(tail), loc);
24475 if (p->error_p)
return node;
24477 args->block_arg = block;
24478 args->kw_args = kw_args;
24487 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
24488 struct vtable *vtargs = p->lvtbl->args;
24491 if (block) block = vtargs->tbl[vtargs->pos-1];
24492 vtable_pop(vtargs, !!block + !!kw_rest_arg);
24493 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
24495 if (!NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body)))
24497 --required_kw_vars;
24498 kwn = kwn->nd_next;
24501 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
24502 ID vid = get_nd_vid(p, kwn->nd_body);
24503 if (NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body))) {
24504 *required_kw_vars++ = vid;
24511 arg_var(p, kw_bits);
24512 if (kw_rest_arg) arg_var(p, kw_rest_arg);
24513 if (block) arg_var(p, block);
24515 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
24517 else if (kw_rest_arg == idNil) {
24518 args->no_kwarg = 1;
24520 else if (kw_rest_arg) {
24521 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
24530 if (max_numparam > NO_PARAM) {
24532 YYLTYPE loc = RUBY_INIT_YYLLOC();
24533 args = new_args_tail(p, 0, 0, 0, 0);
24534 nd_set_loc(RNODE(args), &loc);
24536 args->nd_ainfo.pre_args_num = max_numparam;
24544 RNODE_ARYPTN(aryptn)->nd_pconst = constant;
24547 NODE *pre_args = NEW_LIST(pre_arg, loc);
24548 if (RNODE_ARYPTN(aryptn)->pre_args) {
24549 RNODE_ARYPTN(aryptn)->pre_args = list_concat(pre_args, RNODE_ARYPTN(aryptn)->pre_args);
24552 RNODE_ARYPTN(aryptn)->pre_args = pre_args;
24562 rest_arg = rest_arg ? rest_arg : NODE_SPECIAL_NO_NAME_REST;
24567 NODE *node = NEW_ARYPTN(pre_args, rest_arg, post_args, loc);
24575 RNODE_FNDPTN(fndptn)->nd_pconst = constant;
24583 pre_rest_arg = pre_rest_arg ? pre_rest_arg : NODE_SPECIAL_NO_NAME_REST;
24584 post_rest_arg = post_rest_arg ? post_rest_arg : NODE_SPECIAL_NO_NAME_REST;
24585 NODE *node = NEW_FNDPTN(pre_rest_arg, args, post_rest_arg, loc);
24593 RNODE_HSHPTN(hshptn)->nd_pconst = constant;
24600 NODE *node, *kw_rest_arg_node;
24602 if (kw_rest_arg == idNil) {
24603 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
24605 else if (kw_rest_arg) {
24606 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
24609 kw_rest_arg_node = NULL;
24612 node = NEW_HSHPTN(0, kw_args, kw_rest_arg_node, loc);
24623 return NEW_LIT(
ID2SYM(idNULL), loc);
24626 switch (nd_type(node)) {
24628 nd_set_type(node, NODE_DSYM);
24629 nd_set_loc(node, loc);
24632 lit = RNODE_STR(node)->nd_lit;
24634 nd_set_type(node, NODE_LIT);
24635 nd_set_loc(node, loc);
24638 node = NEW_DSYM(
Qnil, 1, NEW_LIST(node, loc), loc);
24645append_literal_keys(st_data_t k, st_data_t v, st_data_t h)
24649 RNODE_LIST(node)->as.nd_alen = 2;
24650 RNODE_LIST(RNODE_LIST(node)->nd_next)->as.nd_end = RNODE_LIST(node)->nd_next;
24651 RNODE_LIST(RNODE_LIST(node)->nd_next)->nd_next = 0;
24653 list_concat(*result, node);
24656 return ST_CONTINUE;
24667 st_table *literal_keys = st_init_table_with_size(&literal_type, RNODE_LIST(hash)->as.nd_alen / 2);
24669 NODE *last_expr = 0;
24671 while (hash && RNODE_LIST(hash)->nd_next) {
24672 NODE *head = RNODE_LIST(hash)->nd_head;
24673 NODE *value = RNODE_LIST(hash)->nd_next;
24674 NODE *next = RNODE_LIST(value)->nd_next;
24675 st_data_t key = (st_data_t)head;
24677 RNODE_LIST(value)->nd_next = 0;
24679 key = (st_data_t)value;
24681 else if (nd_type_p(head, NODE_LIT) &&
24682 st_delete(literal_keys, (key = (st_data_t)RNODE_LIT(head)->nd_lit, &key), &data)) {
24683 NODE *dup_value = (RNODE_LIST((
NODE *)data))->nd_next;
24684 rb_compile_warn(p->ruby_sourcefile, nd_line((
NODE *)data),
24685 "key %+"PRIsVALUE
" is duplicated and overwritten on line %d",
24686 RNODE_LIT(head)->nd_lit, nd_line(head));
24687 if (dup_value == last_expr) {
24688 RNODE_LIST(value)->nd_head = block_append(p, RNODE_LIST(dup_value)->nd_head, RNODE_LIST(value)->nd_head);
24691 RNODE_LIST(last_expr)->nd_head = block_append(p, RNODE_LIST(dup_value)->nd_head, RNODE_LIST(last_expr)->nd_head);
24694 st_insert(literal_keys, (st_data_t)key, (st_data_t)hash);
24695 last_expr = !head || nd_type_p(head, NODE_LIT) ? value : head;
24698 st_foreach(literal_keys, append_literal_keys, (st_data_t)&result);
24699 st_free_table(literal_keys);
24701 if (!result) result = hash;
24702 else list_concat(result, hash);
24704 result->nd_loc = loc;
24711 if (hash) hash = remove_duplicate_keys(p, hash);
24712 return NEW_HASH(hash, loc);
24719 if (is_private_local_id(p,
id)) {
24722 if (st_is_member(p->pvtbl,
id)) {
24723 yyerror1(loc,
"duplicated variable name");
24726 st_insert(p->pvtbl, (st_data_t)
id, 0);
24734 p->pktbl = st_init_numtable();
24736 else if (st_is_member(p->pktbl, key)) {
24737 yyerror1(loc,
"duplicated key name");
24740 st_insert(p->pktbl, (st_data_t)key, 0);
24747 return NEW_HASH(hash, loc);
24758 ID vid = get_nd_vid(p, lhs);
24759 YYLTYPE lhs_loc = lhs->nd_loc;
24760 int shareable = ctxt.shareable_constant_value;
24762 switch (nd_type(lhs)) {
24773 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
24774 set_nd_value(p, lhs, rhs);
24775 nd_set_loc(lhs, loc);
24776 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
24778 else if (op == tANDOP) {
24780 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
24782 set_nd_value(p, lhs, rhs);
24783 nd_set_loc(lhs, loc);
24784 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
24788 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
24790 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
24792 set_nd_value(p, asgn, rhs);
24793 nd_set_loc(asgn, loc);
24797 asgn = NEW_ERROR(loc);
24808 args = make_list(args, args_loc);
24809 asgn = NEW_OP_ASGN1(ary, op, args, rhs, loc);
24820 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc);
24831 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
24832 asgn = NEW_OP_CDECL(lhs, op, rhs, loc);
24835 asgn = NEW_ERROR(loc);
24844 if (p->ctxt.in_def) {
24845 yyerror1(loc,
"dynamic constant assignment");
24847 return NEW_CDECL(0, 0, (path), loc);
24853 if (p->ctxt.in_def) {
24854 path = assign_error(p,
"dynamic constant assignment", path);
24862 a = dispatch2(assign_error, ERR_MESG(), a);
24870 return ripper_new_yylval(p, get_id(a), dispatch1(var_field, a), 0);
24878 NODE *result = head;
24880 NODE *tmp = rescue_else ? rescue_else : rescue;
24881 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
24883 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
24884 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
24886 else if (rescue_else) {
24887 result = block_append(p, result, rescue_else);
24890 result = NEW_ENSURE(result, ensure, loc);
24892 fixpos(result, head);
24902 if (!local->used)
return;
24903 cnt = local->used->pos;
24904 if (cnt != local->vars->pos) {
24905 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
24908 ID *v = local->vars->tbl;
24909 ID *u = local->used->tbl;
24910 for (
int i = 0; i < cnt; ++i) {
24911 if (!v[i] || (u[i] & LVAR_USED))
continue;
24912 if (is_private_local_id(p, v[i]))
continue;
24913 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN, rb_id2str(v[i]));
24922 int inherits_dvars = toplevel_scope && compile_for_eval;
24926 local->prev = p->lvtbl;
24927 local->args = vtable_alloc(0);
24928 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
24930 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
24931 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
24932 local->numparam.outer = 0;
24933 local->numparam.inner = 0;
24934 local->numparam.current = 0;
24936 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
24938# if WARN_PAST_SCOPE
24949 while (!DVARS_TERMINAL_P(table)) {
24950 struct vtable *cur_table = table;
24951 table = cur_table->prev;
24952 vtable_free(cur_table);
24959 vtable_chain_free(p, local->used);
24961# if WARN_PAST_SCOPE
24962 vtable_chain_free(p, local->past);
24965 vtable_chain_free(p, local->args);
24966 vtable_chain_free(p, local->vars);
24968 ruby_sized_xfree(local,
sizeof(
struct local_vars));
24975 if (p->lvtbl->used) {
24976 warn_unused_var(p, p->lvtbl);
24979 local_free(p, p->lvtbl);
24990 int cnt_args = vtable_size(p->lvtbl->args);
24991 int cnt_vars = vtable_size(p->lvtbl->vars);
24992 int cnt = cnt_args + cnt_vars;
24996 if (cnt <= 0)
return 0;
24997 tbl = rb_ast_new_local_table(p->ast, cnt);
24998 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
25000 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
25001 ID id = p->lvtbl->vars->tbl[i];
25002 if (!vtable_included(p->lvtbl->args,
id)) {
25003 tbl->ids[j++] = id;
25007 tbl = rb_ast_resize_latest_local_table(p->ast, j);
25018 if (!NUMPARAM_ID_P(
id))
return;
25019 compile_error(p,
"_%d is reserved for numbered parameter",
25020 NUMPARAM_ID_TO_IDX(
id));
25026 numparam_name(p,
id);
25027 vtable_add(p->lvtbl->args,
id);
25033 numparam_name(p,
id);
25034 vtable_add(p->lvtbl->vars,
id);
25035 if (p->lvtbl->used) {
25036 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
25043 struct vtable *vars, *args, *used;
25045 vars = p->lvtbl->vars;
25046 args = p->lvtbl->args;
25047 used = p->lvtbl->used;
25049 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
25052 if (used) used = used->prev;
25055 if (vars && vars->prev == DVARS_INHERIT) {
25056 return rb_local_defined(
id, p->parent_iseq);
25058 else if (vtable_included(args,
id)) {
25062 int i = vtable_included(vars,
id);
25063 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
25071 return local_id_ref(p,
id, NULL);
25077 if (local_id(p, idFWD_ALL))
return TRUE;
25078 compile_error(p,
"unexpected ...");
25085 arg_var(p, idFWD_REST);
25086#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
25087 arg_var(p, idFWD_KWREST);
25089 arg_var(p, idFWD_BLOCK);
25090 arg_var(p, idFWD_ALL);
25096 bool conflict =
false;
25098 struct vtable *vars, *args;
25100 vars = p->lvtbl->vars;
25101 args = p->lvtbl->args;
25103 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
25104 conflict |= (vtable_included(args, arg) && !(all && vtable_included(args, all)));
25109 bool found =
false;
25110 if (vars && vars->prev == DVARS_INHERIT && !found) {
25111 found = (rb_local_defined(arg, p->parent_iseq) &&
25112 !(all && rb_local_defined(all, p->parent_iseq)));
25115 found = (vtable_included(args, arg) &&
25116 !(all && vtable_included(args, all)));
25120 compile_error(p,
"no anonymous %s parameter", var);
25122 else if (conflict) {
25123 compile_error(p,
"anonymous %s parameter is also used within block", var);
25131 NODE *rest = NEW_LVAR(idFWD_REST, loc);
25132#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
25133 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
25136 NODE *args = leading ? rest_arg_append(p, leading, rest, argsloc) : NEW_SPLAT(rest, loc);
25137#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
25138 args = arg_append(p, args, new_hash(p, kwrest, loc), loc);
25140 return arg_blk_pass(args, block);
25149 NODE *inner = local->numparam.inner;
25150 if (!local->numparam.outer) {
25151 local->numparam.outer = local->numparam.current;
25153 local->numparam.inner = 0;
25154 local->numparam.current = 0;
25168 local->numparam.inner = prev_inner;
25170 else if (local->numparam.current) {
25172 local->numparam.inner = local->numparam.current;
25174 if (p->max_numparam > NO_PARAM) {
25176 local->numparam.current = local->numparam.outer;
25177 local->numparam.outer = 0;
25181 local->numparam.current = 0;
25186static const struct vtable *
25189 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
25190 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
25191 if (p->lvtbl->used) {
25192 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
25194 return p->lvtbl->args;
25200 struct vtable *tmp = *vtblp;
25201 *vtblp = tmp->prev;
25202# if WARN_PAST_SCOPE
25203 if (p->past_scope_enabled) {
25204 tmp->prev = p->lvtbl->past;
25205 p->lvtbl->past = tmp;
25217 if ((tmp = p->lvtbl->used) != 0) {
25218 warn_unused_var(p, p->lvtbl);
25219 p->lvtbl->used = p->lvtbl->used->prev;
25222 dyna_pop_vtable(p, &p->lvtbl->args);
25223 dyna_pop_vtable(p, &p->lvtbl->vars);
25229 while (p->lvtbl->args != lvargs) {
25231 if (!p->lvtbl->args) {
25233 ruby_sized_xfree(p->lvtbl,
sizeof(*p->lvtbl));
25243 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
25249 struct vtable *vars, *args, *used;
25252 args = p->lvtbl->args;
25253 vars = p->lvtbl->vars;
25254 used = p->lvtbl->used;
25256 while (!DVARS_TERMINAL_P(vars)) {
25257 if (vtable_included(args,
id)) {
25260 if ((i = vtable_included(vars,
id)) != 0) {
25261 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
25266 if (!vidrefp) used = 0;
25267 if (used) used = used->prev;
25270 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
25271 return rb_dvar_defined(
id, p->parent_iseq);
25280 return dvar_defined_ref(p,
id, NULL);
25286 return (vtable_included(p->lvtbl->args,
id) ||
25287 vtable_included(p->lvtbl->vars,
id));
25294 "regexp encoding option '%c' differs from source encoding '%s'",
25295 c, rb_enc_name(rb_enc_get(str)));
25302 int c = RE_OPTION_ENCODING_IDX(options);
25306 rb_char_to_option_kcode(c, &opt, &idx);
25308 !is_ascii_string(str)) {
25313 else if (RE_OPTION_ENCODING_NONE(options)) {
25315 !is_ascii_string(str)) {
25319 rb_enc_associate(str, rb_ascii8bit_encoding());
25321 else if (rb_is_usascii_enc(p->enc)) {
25322 if (!is_ascii_string(str)) {
25324 rb_enc_associate(str, rb_usascii_encoding());
25327 rb_enc_associate(str, rb_ascii8bit_encoding());
25339 int c = rb_reg_fragment_setenc(p, str, options);
25340 if (c) reg_fragment_enc_error(p, str, c);
25347 reg_fragment_setenc(p, str, options);
25348 err = rb_reg_check_preprocess(str);
25350 err = rb_obj_as_string(err);
25351 compile_error(p,
"%"PRIsVALUE, err);
25357#ifndef UNIVERSAL_PARSER
25366reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
25367 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
25372 long len = name_end - name;
25373 const char *s = (
const char *)name;
25375 return rb_reg_named_capture_assign_iter_impl(p, s,
len, enc, &arg->succ_block, arg->loc);
25384 arg.enc = rb_enc_get(regexp);
25385 arg.succ_block = 0;
25387 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
25389 if (!arg.succ_block)
return 0;
25390 return RNODE_BLOCK(arg.succ_block)->nd_next;
25395rb_reg_named_capture_assign_iter_impl(
struct parser_params *p,
const char *s,
long len,
25401 if (!
len)
return ST_CONTINUE;
25402 if (!VALID_SYMNAME_P(s,
len, enc, ID_LOCAL))
25403 return ST_CONTINUE;
25405 var = intern_cstr(s,
len, enc);
25406 if (
len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)
len)) {
25407 if (!lvar_defined(p, var))
return ST_CONTINUE;
25409 node = node_assign(p, assignable(p, var, 0, loc), NEW_LIT(
ID2SYM(var), loc), NO_LEX_CTXT, loc);
25410 succ = *succ_block;
25411 if (!succ) succ = NEW_ERROR(loc);
25412 succ = block_append(p, succ, node);
25413 *succ_block = succ;
25414 return ST_CONTINUE;
25420 reg_fragment_setenc(p, str, options);
25421 return rb_parser_reg_compile(p, str, options);
25427 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
25436 err = rb_errinfo();
25437 re = parser_reg_compile(p, str, options);
25439 VALUE m = rb_attr_get(rb_errinfo(), idMesg);
25440 rb_set_errinfo(err);
25441 compile_error(p,
"%"PRIsVALUE, m);
25450 VALUE err = rb_errinfo();
25452 str = ripper_is_node_yylval(p, str) ? RNODE_RIPPER(str)->nd_cval : str;
25453 int c = rb_reg_fragment_setenc(p, str, options);
25454 if (c) reg_fragment_enc_error(p, str, c);
25455 re = rb_parser_reg_compile(p, str, options);
25457 *errmsg = rb_attr_get(rb_errinfo(), idMesg);
25458 rb_set_errinfo(err);
25466rb_ruby_parser_set_options(
struct parser_params *p,
int print,
int loop,
int chomp,
int split)
25468 p->do_print = print;
25470 p->do_chomp = chomp;
25471 p->do_split = split;
25477 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
25478 const YYLTYPE *
const LOC = &default_location;
25481 NODE *print = (
NODE *)NEW_FCALL(rb_intern(
"print"),
25482 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
25484 node = block_append(p, node, print);
25488 NODE *irs = NEW_LIST(NEW_GVAR(rb_intern(
"$/"), LOC), LOC);
25491 ID ifs = rb_intern(
"$;");
25492 ID fields = rb_intern(
"$F");
25493 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
25494 NODE *split = NEW_GASGN(fields,
25495 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
25496 rb_intern(
"split"), args, LOC),
25498 node = block_append(p, split, node);
25501 NODE *chomp = NEW_LIT(
ID2SYM(rb_intern(
"chomp")), LOC);
25502 chomp = list_append(p, NEW_LIST(chomp, LOC), NEW_TRUE(LOC));
25503 irs = list_append(p, irs, NEW_HASH(chomp, LOC));
25506 node = NEW_WHILE((
NODE *)NEW_FCALL(idGets, irs, LOC), node, 1, LOC);
25523 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
25531 p->command_start = TRUE;
25532 p->ruby_sourcefile_string =
Qnil;
25533 p->lex.lpar_beg = -1;
25535 p->delayed.token =
Qnil;
25536 p->frozen_string_literal = -1;
25539 p->parsing_thread =
Qnil;
25541 p->error_buffer =
Qfalse;
25542 p->end_expect_token_locations =
Qnil;
25546 p->debug_buffer =
Qnil;
25547 p->debug_output = rb_ractor_stdout();
25548 p->enc = rb_utf8_encoding();
25553#define rb_ruby_parser_mark ripper_parser_mark
25554#define rb_ruby_parser_free ripper_parser_free
25555#define rb_ruby_parser_memsize ripper_parser_memsize
25559rb_ruby_parser_mark(
void *ptr)
25563 rb_gc_mark(p->lex.input);
25564 rb_gc_mark(p->lex.lastline);
25565 rb_gc_mark(p->lex.nextline);
25566 rb_gc_mark(p->ruby_sourcefile_string);
25567 rb_gc_mark((
VALUE)p->ast);
25568 rb_gc_mark(p->case_labels);
25569 rb_gc_mark(p->delayed.token);
25571 rb_gc_mark(p->debug_lines);
25572 rb_gc_mark(p->error_buffer);
25573 rb_gc_mark(p->end_expect_token_locations);
25574 rb_gc_mark(p->tokens);
25576 rb_gc_mark(p->value);
25577 rb_gc_mark(p->result);
25578 rb_gc_mark(p->parsing_thread);
25580 rb_gc_mark(p->debug_buffer);
25581 rb_gc_mark(p->debug_output);
25583 rb_gc_mark((
VALUE)p->heap);
25588rb_ruby_parser_free(
void *ptr)
25592#ifdef UNIVERSAL_PARSER
25593 rb_parser_config_t *config = p->config;
25597 ruby_sized_xfree(p->tokenbuf, p->toksiz);
25600 for (local = p->lvtbl; local; local = prev) {
25601 prev = local->prev;
25602 local_free(p, local);
25607 while ((ptinfo = p->token_info) != 0) {
25608 p->token_info = ptinfo->next;
25614#ifdef UNIVERSAL_PARSER
25616 if (config->counter <= 0) {
25617 rb_ruby_parser_config_free(config);
25623rb_ruby_parser_memsize(
const void *ptr)
25627 size_t size =
sizeof(*p);
25630 for (local = p->lvtbl; local; local = local->prev) {
25631 size +=
sizeof(*local);
25632 if (local->vars) size += local->vars->capa *
sizeof(
ID);
25637#ifdef UNIVERSAL_PARSER
25638rb_parser_config_t *
25639rb_ruby_parser_config_new(
void *(*malloc)(
size_t size))
25641 return (rb_parser_config_t *)malloc(
sizeof(rb_parser_config_t));
25645rb_ruby_parser_config_free(rb_parser_config_t *config)
25647 config->free(config);
25651#ifndef UNIVERSAL_PARSER
25656 rb_ruby_parser_mark,
25657 rb_ruby_parser_free,
25658 rb_ruby_parser_memsize,
25660 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
25666#undef rb_reserved_word
25669rb_reserved_word(
const char *str,
unsigned int len)
25671 return reserved_word(str,
len);
25674#ifdef UNIVERSAL_PARSER
25676rb_ruby_parser_allocate(rb_parser_config_t *config)
25680 p->config = config;
25681 p->config->counter++;
25686rb_ruby_parser_new(rb_parser_config_t *config)
25689 rb_parser_t *p = rb_ruby_parser_allocate(config);
25690 parser_initialize(p);
25699 p->parent_iseq = base;
25706 if (!
RTEST(lines)) {
25709 else if (lines ==
Qtrue) {
25710 lines = rb_ary_new();
25714 rb_ary_modify(lines);
25716 p->debug_lines = lines;
25722 p->error_tolerant = 1;
25724 p->end_expect_token_locations = rb_ary_new();
25730 p->keep_tokens = 1;
25732 p->tokens = rb_ary_new();
25735#ifndef UNIVERSAL_PARSER
25737rb_parser_compile_file_path(
VALUE vparser,
VALUE fname,
VALUE file,
int start)
25743 return rb_ruby_parser_compile_file_path(p, fname, file, start);
25753 return rb_ruby_parser_compile_generic(p, lex_gets, fname, input, start);
25757rb_parser_compile_string(
VALUE vparser,
const char *f,
VALUE s,
int line)
25763 return rb_ruby_parser_compile_string(p, f, s, line);
25767rb_parser_compile_string_path(
VALUE vparser,
VALUE f,
VALUE s,
int line)
25773 return rb_ruby_parser_compile_string_path(p, f, s, line);
25777rb_parser_encoding(
VALUE vparser)
25782 return rb_ruby_parser_encoding(p);
25786rb_parser_end_seen_p(
VALUE vparser)
25791 return RBOOL(rb_ruby_parser_end_seen_p(p));
25795rb_parser_error_tolerant(
VALUE vparser)
25800 rb_ruby_parser_error_tolerant(p);
25804rb_parser_set_script_lines(
VALUE vparser,
VALUE lines)
25809 rb_ruby_parser_set_script_lines(p, lines);
25813rb_parser_keep_tokens(
VALUE vparser)
25818 rb_ruby_parser_keep_tokens(p);
25826 &parser_data_type, p);
25827 parser_initialize(p);
25837 rb_ruby_parser_set_context(p, base, main);
25842rb_parser_set_options(
VALUE vparser,
int print,
int loop,
int chomp,
int split)
25847 rb_ruby_parser_set_options(p, print, loop, chomp, split);
25851rb_parser_set_yydebug(
VALUE self,
VALUE flag)
25856 rb_ruby_parser_set_yydebug(p,
RTEST(flag));
25864 return rb_enc_from_encoding(p->enc);
25870 return p->ruby__end__seen;
25874rb_ruby_parser_set_yydebug(
rb_parser_t *p,
int flag)
25903 return p->debug_output;
25909 p->debug_output = output;
25915 return p->parsing_thread;
25921 p->parsing_thread = parsing_thread;
25927 p->lex.gets = gets;
25928 p->lex.input = input;
25930 p->ruby_sourcefile_string = sourcefile_string;
25931 p->ruby_sourcefile = sourcefile;
25932 p->ruby_sourceline = sourceline;
25948rb_ruby_parser_ruby_sourcefile_string(
rb_parser_t *p)
25950 return p->ruby_sourcefile_string;
25956 return p->ruby_sourceline;
25962 return p->lex.state;
25969 p->ast = rb_ast_new();
25970 ripper_yyparse((
void*)p);
25971 rb_ast_dispose(p->ast);
25978 return dedent_string(p,
string, width);
25984 return lex_get_str(p, s);
25990 return p->lex.input != 0;
25996 parser_initialize(p);
26002 return p->lex.ptok - p->lex.pbeg;
26008 return p->lex.pcur - p->lex.ptok;
26014 return p->lex.lastline;
26018rb_ruby_ripper_lex_state_name(
struct parser_params *p,
int state)
26020 return rb_parser_lex_state_name(p, (
enum lex_state_e)state);
26024rb_ruby_ripper_parser_allocate(
void)
26032#define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
26035#define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
26036#define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
26037 (new)->cnt = (cnt), (ptr))
26042 size_t cnt = HEAPCNT(1, size);
26046 return ADD2HEAP(n, cnt, ptr);
26050rb_parser_calloc(
struct parser_params *p,
size_t nelem,
size_t size)
26052 size_t cnt = HEAPCNT(nelem, size);
26054 void *ptr =
xcalloc(nelem, size);
26056 return ADD2HEAP(n, cnt, ptr);
26060rb_parser_realloc(
struct parser_params *p,
void *ptr,
size_t size)
26063 size_t cnt = HEAPCNT(1, size);
26065 if (ptr && (n = p->heap) != NULL) {
26067 if (n->ptr == ptr) {
26068 n->ptr = ptr =
xrealloc(ptr, size);
26069 if (n->cnt) n->cnt = cnt;
26072 }
while ((n = n->next) != NULL);
26076 return ADD2HEAP(n, cnt, ptr);
26084 while ((n = *prev) != NULL) {
26085 if (n->ptr == ptr) {
26095rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
26098 VALUE mesg = p->debug_buffer;
26102 rb_str_vcatf(mesg, fmt, ap);
26104 if (end_with_newline_p(p, mesg)) {
26105 rb_io_write(p->debug_output, mesg);
26106 p->debug_buffer =
Qnil;
26114 int lineno, column;
26117 lineno = loc->end_pos.lineno;
26118 column = loc->end_pos.column;
26121 lineno = p->ruby_sourceline;
26125 rb_io_flush(p->debug_output);
26129 rb_syntax_error_append(p->error_buffer,
26130 p->ruby_sourcefile_string,
26137count_char(
const char *str,
int c)
26140 while (str[n] == c) ++n;
26150RUBY_FUNC_EXPORTED
size_t
26151rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
26153 if (*yystr ==
'"') {
26154 size_t yyn = 0, bquote = 0;
26155 const char *yyp = yystr;
26161 bquote = count_char(yyp+1,
'`') + 1;
26162 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
26170 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
26171 if (yyres) memcpy(yyres + yyn, yyp, bquote);
26177 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
26178 if (yyres) memcpy(yyres + yyn, yyp, 3);
26183 goto do_not_strip_quotes;
26186 goto do_not_strip_quotes;
26189 if (*++yyp !=
'\\')
26190 goto do_not_strip_quotes;
26206 do_not_strip_quotes: ;
26209 if (!yyres)
return strlen(yystr);
26211 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
26221 if (x ==
Qfalse)
return x;
26222 if (x ==
Qtrue)
return x;
26223 if (
NIL_P(x))
return x;
26225 rb_raise(rb_eArgError,
"Qundef given");
26238 if (!nd_type_p((
NODE *)x, NODE_RIPPER)) {
26239 rb_raise(rb_eArgError,
"NODE given: %p", (
void *)x);
26241 x = ((
NODE *)x)->nd_rval;
26244 rb_raise(rb_eArgError,
"wrong type of ruby object: %p (%s)",
26248 rb_raise(rb_eArgError,
"hidden ruby object: %p (%s)",
26249 (
void *)x, rb_builtin_type_name(
TYPE(x)));
26255#define validate(x) ((x) = get_value(x))
26284 return rb_funcall(p->value, mid, 3, a, b, c);
26294 return rb_funcall(p->value, mid, 4, a, b, c, d);
26305 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
26318 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 FIXNUM_MAX
Old name of RUBY_FIXNUM_MAX.
#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.