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)
goto eof;
18136 int c2 = escaped_control_code(c);
18138 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
18139 WARN_SPACE_CHAR(c2,
"\\M-");
18142 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
18145 else if (
ISCNTRL(c))
goto eof;
18146 return ((c & 0xff) | 0x80);
18150 if ((c = nextc(p)) !=
'-') {
18154 if (flags & ESCAPE_CONTROL)
goto eof;
18155 if ((c = nextc(p))==
'\\') {
18156 switch (peekc(p)) {
18157 case 'u':
case 'U':
18161 c = read_escape(p, flags|ESCAPE_CONTROL);
18165 else if (c == -1)
goto eof;
18171 int c2 = escaped_control_code(c);
18174 if (flags & ESCAPE_META) {
18175 WARN_SPACE_CHAR(c2,
"\\M-");
18178 WARN_SPACE_CHAR(c2,
"");
18182 if (flags & ESCAPE_META) {
18183 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
18186 WARN_SPACE_CHAR(c2,
"\\C-");
18190 else if (
ISCNTRL(c))
goto eof;
18196 yyerror0(
"Invalid escape character syntax");
18197 dispatch_scan_event(p, tSTRING_CONTENT);
18208 int len = rb_enc_codelen(c, enc);
18209 rb_enc_mbcput(c, tokspace(p,
len), enc);
18218 switch (c = nextc(p)) {
18222 case '0':
case '1':
case '2':
case '3':
18223 case '4':
case '5':
case '6':
case '7':
18225 ruby_scan_oct(--p->lex.pcur, 3, &numlen);
18226 if (numlen == 0)
goto eof;
18227 p->lex.pcur += numlen;
18228 tokcopy(p, (
int)numlen + 1);
18234 tok_hex(p, &numlen);
18235 if (numlen == 0)
return -1;
18236 tokcopy(p, (
int)numlen + 2);
18242 yyerror0(
"Invalid escape character syntax");
18262 while (c = nextc(p),
ISALPHA(c)) {
18264 options |= RE_OPTION_ONCE;
18266 else if (rb_char_to_option_kcode(c, &opt, &kc)) {
18268 if (kc != rb_ascii8bit_encindex()) kcode = c;
18282 YYLTYPE loc = RUBY_INIT_YYLLOC();
18284 compile_error(p,
"unknown regexp option%s - %*s",
18285 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
18286 parser_show_error_line(p, &loc);
18288 return options | RE_OPTION_ENCODING(kcode);
18294 int len = parser_precise_mbclen(p, p->lex.pcur-1);
18295 if (
len < 0)
return -1;
18297 p->lex.pcur += --
len;
18298 if (
len > 0) tokcopy(p,
len);
18303simple_re_meta(
int c)
18306 case '$':
case '*':
case '+':
case '.':
18307 case '?':
case '^':
case '|':
18308 case ')':
case ']':
case '}':
case '>':
18316parser_update_heredoc_indent(
struct parser_params *p,
int c)
18318 if (p->heredoc_line_indent == -1) {
18319 if (c ==
'\n') p->heredoc_line_indent = 0;
18323 p->heredoc_line_indent++;
18326 else if (c ==
'\t') {
18327 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
18328 p->heredoc_line_indent = w * TAB_WIDTH;
18331 else if (c !=
'\n') {
18332 if (p->heredoc_indent > p->heredoc_line_indent) {
18333 p->heredoc_indent = p->heredoc_line_indent;
18335 p->heredoc_line_indent = -1;
18344 YYLTYPE loc = RUBY_INIT_YYLLOC();
18345 const char *n1 = rb_enc_name(enc1), *n2 = rb_enc_name(enc2);
18346 compile_error(p,
"%s mixed within %s source", n1, n2);
18347 parser_show_error_line(p, &loc);
18353 const char *pos = p->lex.pcur;
18355 parser_mixed_error(p, enc1, enc2);
18360nibble_char_upper(
unsigned int c)
18363 return c + (c < 10 ?
'0' :
'A' - 10);
18368 int func,
int term,
int paren,
long *nest,
18372 bool erred =
false;
18374 const int heredoc_end = (p->heredoc_end ? p->heredoc_end + 1 : 0);
18375 int top_of_line = FALSE;
18378#define mixed_error(enc1, enc2) \
18379 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
18380#define mixed_escape(beg, enc1, enc2) \
18381 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
18383 while ((c = nextc(p)) != -1) {
18384 if (p->heredoc_indent > 0) {
18385 parser_update_heredoc_indent(p, c);
18388 if (top_of_line && heredoc_end == p->ruby_sourceline) {
18394 if (paren && c == paren) {
18397 else if (c == term) {
18398 if (!nest || !*nest) {
18404 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && !lex_eol_p(p)) {
18405 unsigned char c2 = *p->lex.pcur;
18406 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
18411 else if (c ==
'\\') {
18415 if (func & STR_FUNC_QWORDS)
break;
18416 if (func & STR_FUNC_EXPAND) {
18417 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
18428 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
18432 if ((func & STR_FUNC_EXPAND) == 0) {
18436 tokadd_utf8(p, enc, term,
18437 func & STR_FUNC_SYMBOL,
18438 func & STR_FUNC_REGEXP);
18442 if (c == -1)
return -1;
18444 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
18447 if (func & STR_FUNC_REGEXP) {
18453 c = read_escape(p, 0);
18458 *t++ = nibble_char_upper(c >> 4);
18459 *t++ = nibble_char_upper(c);
18464 if (c == term && !simple_re_meta(c)) {
18469 if ((c = tokadd_escape(p)) < 0)
18471 if (*enc && *enc != *encp) {
18472 mixed_escape(p->lex.ptok+2, *enc, *encp);
18476 else if (func & STR_FUNC_EXPAND) {
18478 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
18479 c = read_escape(p, 0);
18481 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
18484 else if (c != term && !(paren && c == paren)) {
18491 else if (!parser_isascii(p)) {
18496 else if (*enc != *encp) {
18497 mixed_error(*enc, *encp);
18500 if (tokadd_mbchar(p, c) == -1)
return -1;
18503 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
18511 else if (*enc != *encp) {
18512 mixed_error(*enc, *encp);
18518 top_of_line = (c ==
'\n');
18522 if (*enc) *encp = *enc;
18526#define NEW_STRTERM(func, term, paren) new_strterm(p, func, term, paren)
18532 VALUE content = yylval.val;
18533 if (!ripper_is_node_yylval(p, content))
18534 content = ripper_new_yylval(p, 0, 0, content);
18535 if (has_delayed_token(p)) {
18536 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
18538 rb_enc_str_buf_cat(p->delayed.token, p->lex.ptok,
len, enc);
18540 dispatch_delayed_token(p, tSTRING_CONTENT);
18541 p->lex.ptok = p->lex.pcur;
18542 RNODE_RIPPER(content)->nd_rval = yylval.val;
18544 dispatch_scan_event(p, tSTRING_CONTENT);
18545 if (yylval.val != content)
18546 RNODE_RIPPER(content)->nd_rval = yylval.val;
18547 yylval.val = content;
18553 if (has_delayed_token(p)) {
18554 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
18556 rb_enc_str_buf_cat(p->delayed.token, p->lex.ptok,
len, enc);
18557 p->delayed.end_line = p->ruby_sourceline;
18558 p->delayed.end_col =
rb_long2int(p->lex.pcur - p->lex.pbeg);
18560 dispatch_delayed_token(p, tSTRING_CONTENT);
18561 p->lex.ptok = p->lex.pcur;
18563 dispatch_scan_event(p, tSTRING_CONTENT);
18567RUBY_FUNC_EXPORTED
const uint_least32_t ruby_global_name_punct_bits[(0x7e - 0x20 + 31) / 32];
18571#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
18572#define SPECIAL_PUNCT(idx) ( \
18573 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
18574 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
18575 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
18576 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
18577 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
18579const uint_least32_t ruby_global_name_punct_bits[] = {
18585#undef SPECIAL_PUNCT
18588static enum yytokentype
18589parser_peek_variable_name(struct parser_params *p)
18592 const char *ptr = p->lex.pcur;
18594 if (lex_eol_ptr_n_p(p, ptr, 1)) return 0;
18598 if ((c = *ptr) == '-') {
18599 if (lex_eol_ptr_p(p, ++ptr)) return 0;
18602 else if (is_global_name_punct(c) || ISDIGIT(c)) {
18603 return tSTRING_DVAR;
18607 if ((c = *ptr) == '@') {
18608 if (lex_eol_ptr_p(p, ++ptr)) return 0;
18614 p->command_start = TRUE;
18615 return tSTRING_DBEG;
18619 if (!ISASCII(c) || c == '_' || ISALPHA(c))
18620 return tSTRING_DVAR;
18624#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
18625#define IS_END() IS_lex_state(EXPR_END_ANY)
18626#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
18627#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
18628#define IS_LABEL_POSSIBLE() (\
18629 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
18631#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
18632#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
18634static inline enum yytokentype
18635parser_string_term(struct parser_params *p, int func)
18637 xfree(p->lex.strterm);
18638 p->lex.strterm = 0;
18639 if (func & STR_FUNC_REGEXP) {
18640 set_yylval_num(regx_options(p));
18641 dispatch_scan_event(p, tREGEXP_END);
18642 SET_LEX_STATE(EXPR_END);
18643 return tREGEXP_END;
18645 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
18647 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
18650 SET_LEX_STATE(EXPR_END);
18651 return tSTRING_END;
18654static enum yytokentype
18655parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
18657 int func = quote->func;
18658 int term = quote->term;
18659 int paren = quote->paren;
18661 rb_encoding *enc = p->enc;
18662 rb_encoding *base_enc = 0;
18665 if (func & STR_FUNC_TERM) {
18666 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
18667 SET_LEX_STATE(EXPR_END);
18668 xfree(p->lex.strterm);
18669 p->lex.strterm = 0;
18670 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
18673 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
18674 while (c != '\n' && ISSPACE(c = nextc(p)));
18677 if (func & STR_FUNC_LIST) {
18678 quote->func &= ~STR_FUNC_LIST;
18681 if (c == term && !quote->nest) {
18682 if (func & STR_FUNC_QWORDS) {
18683 quote->func |= STR_FUNC_TERM;
18684 pushback(p, c); /* dispatch the term at tSTRING_END */
18685 add_delayed_token(p, p->lex.ptok, p->lex.pcur, __LINE__);
18688 return parser_string_term(p, func);
18691 if (!ISSPACE(c)) pushback(p, c);
18692 add_delayed_token(p, p->lex.ptok, p->lex.pcur, __LINE__);
18696 if ((func & STR_FUNC_EXPAND) && c == '#') {
18697 enum yytokentype t = parser_peek_variable_name(p);
18703 if (tokadd_string(p, func, term, paren, "e->nest,
18704 &enc, &base_enc) == -1) {
18707# define unterminated_literal(mesg) yyerror0(mesg)
18709# define unterminated_literal(mesg) compile_error(p, mesg)
18711 literal_flush(p, p->lex.pcur);
18712 if (func & STR_FUNC_QWORDS) {
18713 /* no content to add, bailing out here */
18714 unterminated_literal("unterminated list meets end of file");
18715 xfree(p->lex.strterm);
18716 p->lex.strterm = 0;
18717 return tSTRING_END;
18719 if (func & STR_FUNC_REGEXP) {
18720 unterminated_literal("unterminated regexp meets end of file");
18723 unterminated_literal("unterminated string meets end of file");
18725 quote->func |= STR_FUNC_TERM;
18730 lit = STR_NEW3(tok(p), toklen(p), enc, func);
18731 set_yylval_str(lit);
18732 flush_string_content(p, enc);
18734 return tSTRING_CONTENT;
18737static enum yytokentype
18738heredoc_identifier(struct parser_params *p)
18741 * term_len is length of `<<"END"` except `END`,
18742 * in this case term_len is 4 (<, <, " and ").
18744 long len, offset = p->lex.pcur - p->lex.pbeg;
18745 int c = nextc(p), term, func = 0, quote = 0;
18746 enum yytokentype token = tSTRING_BEG;
18751 func = STR_FUNC_INDENT;
18754 else if (c == '~') {
18756 func = STR_FUNC_INDENT;
18762 func |= str_squote; goto quoted;
18764 func |= str_dquote;
goto quoted;
18766 token = tXSTRING_BEG;
18767 func |= str_xquote;
goto quoted;
18774 while ((c = nextc(p)) != term) {
18775 if (c == -1 || c ==
'\r' || c ==
'\n') {
18776 yyerror0(
"unterminated here document identifier");
18783 if (!parser_is_identchar(p)) {
18785 if (func & STR_FUNC_INDENT) {
18786 pushback(p, indent > 0 ?
'~' :
'-');
18790 func |= str_dquote;
18792 int n = parser_precise_mbclen(p, p->lex.pcur-1);
18793 if (n < 0)
return 0;
18794 p->lex.pcur += --n;
18795 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
18800 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
18801 if ((
unsigned long)
len >= HERETERM_LENGTH_MAX)
18802 yyerror0(
"too long here document identifier");
18803 dispatch_scan_event(p, tHEREDOC_BEG);
18806 p->lex.strterm = new_heredoc(p);
18808 here->offset = offset;
18809 here->sourceline = p->ruby_sourceline;
18810 here->length = (unsigned)
len;
18811 here->quote = quote;
18813 here->lastline = p->lex.lastline;
18814 rb_ast_add_mark_object(p->ast, p->lex.lastline);
18817 p->heredoc_indent = indent;
18818 p->heredoc_line_indent = 0;
18828 p->lex.strterm = 0;
18829 line = here->lastline;
18830 p->lex.lastline = line;
18831 p->lex.pbeg = RSTRING_PTR(line);
18832 p->lex.pend = p->lex.pbeg + RSTRING_LEN(line);
18833 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
18834 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
18835 p->heredoc_end = p->ruby_sourceline;
18836 p->ruby_sourceline = (int)here->sourceline;
18837 if (p->eofp) p->lex.nextline =
Qnil;
18840 rb_ast_delete_mark_object(p->ast, line);
18851 for (i = 0; i <
len && col < width; i++) {
18852 if (str[i] ==
' ') {
18855 else if (str[i] ==
'\t') {
18856 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
18857 if (n > width)
break;
18865 rb_str_modify(
string);
18866 str = RSTRING_PTR(
string);
18867 if (RSTRING_LEN(
string) !=
len)
18868 rb_fatal(
"literal string changed: %+"PRIsVALUE,
string);
18870 rb_str_set_len(
string,
len - i);
18878 NODE *node, *str_node, *prev_node;
18879 int indent = p->heredoc_indent;
18880 VALUE prev_lit = 0;
18882 if (indent <= 0)
return root;
18883 p->heredoc_indent = 0;
18884 if (!root)
return root;
18886 prev_node = node = str_node = root;
18887 if (nd_type_p(root, NODE_LIST)) str_node = RNODE_LIST(root)->nd_head;
18890 VALUE lit = RNODE_LIT(str_node)->nd_lit;
18891 if (nd_fl_newline(str_node)) {
18892 dedent_string(p, lit, indent);
18897 else if (!literal_concat0(p, prev_lit, lit)) {
18901 NODE *end = RNODE_LIST(node)->as.nd_end;
18902 node = RNODE_LIST(prev_node)->nd_next = RNODE_LIST(node)->nd_next;
18904 if (nd_type_p(prev_node, NODE_DSTR))
18905 nd_set_type(prev_node, NODE_STR);
18908 RNODE_LIST(node)->as.nd_end = end;
18913 while ((nd_type_p(node, NODE_LIST) || nd_type_p(node, NODE_DSTR)) && (node = RNODE_LIST(prev_node = node)->nd_next) != 0) {
18915 if (!nd_type_p(node, NODE_LIST))
break;
18916 if ((str_node = RNODE_LIST(node)->nd_head) != 0) {
18917 enum node_type
type = nd_type(str_node);
18918 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
18930 int indent = p->heredoc_indent;
18932 if (indent <= 0)
return array;
18933 p->heredoc_indent = 0;
18934 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
18940whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
18942 const char *beg = p->lex.pbeg;
18943 const char *ptr = p->lex.pend;
18945 if (ptr - beg <
len)
return FALSE;
18946 if (ptr > beg && ptr[-1] ==
'\n') {
18947 if (--ptr > beg && ptr[-1] ==
'\r') --ptr;
18948 if (ptr - beg <
len)
return FALSE;
18950 if (strncmp(eos, ptr -=
len,
len))
return FALSE;
18952 while (beg < ptr &&
ISSPACE(*beg)) beg++;
18960 if (strncmp(p->lex.pcur, word,
len))
return 0;
18961 if (lex_eol_n_p(p,
len))
return 1;
18962 int c = (
unsigned char)p->lex.pcur[
len];
18965 case '\0':
case '\004':
case '\032':
return 1;
18970#define NUM_SUFFIX_R (1<<0)
18971#define NUM_SUFFIX_I (1<<1)
18972#define NUM_SUFFIX_ALL 3
18978 const char *lastp = p->lex.pcur;
18980 while ((c = nextc(p)) != -1) {
18981 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
18982 result |= (mask & NUM_SUFFIX_I);
18983 mask &= ~NUM_SUFFIX_I;
18985 mask &= ~NUM_SUFFIX_R;
18988 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
18989 result |= (mask & NUM_SUFFIX_R);
18990 mask &= ~NUM_SUFFIX_R;
18994 p->lex.pcur = lastp;
18995 literal_flush(p, p->lex.pcur);
19004static enum yytokentype
19006 enum yytokentype
type,
int suffix)
19008 if (suffix & NUM_SUFFIX_I) {
19009 v = rb_complex_raw(
INT2FIX(0), v);
19012 set_yylval_literal(v);
19013 SET_LEX_STATE(EXPR_END);
19017static enum yytokentype
19020 enum yytokentype
type = tINTEGER;
19021 if (suffix & NUM_SUFFIX_R) {
19025 return set_number_literal(p, v,
type, suffix);
19033 if (has_delayed_token(p))
19034 dispatch_delayed_token(p, tSTRING_CONTENT);
19035 str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
19036 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
19037 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
19043#define dispatch_heredoc_end(p) parser_dispatch_heredoc_end(p, __LINE__)
19045parser_dispatch_heredoc_end(
struct parser_params *p,
int line)
19047 if (has_delayed_token(p))
19048 dispatch_delayed_token(p, tSTRING_CONTENT);
19050 if (p->keep_tokens) {
19051 VALUE str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
19052 RUBY_SET_YYLLOC_OF_HEREDOC_END(*p->yylloc);
19053 parser_append_tokens(p, str, tHEREDOC_END, line);
19056 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
19062static enum yytokentype
19065 int c, func, indent = 0;
19066 const char *eos, *ptr, *ptr_end;
19073 eos = RSTRING_PTR(here->lastline) + here->offset;
19074 len = here->length;
19075 indent = (func = here->func) & STR_FUNC_INDENT;
19077 if ((c = nextc(p)) == -1) {
19080 if (!has_delayed_token(p)) {
19081 dispatch_scan_event(p, tSTRING_CONTENT);
19084 if ((
len = p->lex.pcur - p->lex.ptok) > 0) {
19085 if (!(func & STR_FUNC_REGEXP) && rb_enc_asciicompat(enc)) {
19089 rb_is_usascii_enc(p->enc) &&
19090 enc != rb_utf8_encoding()) {
19091 enc = rb_ascii8bit_encoding();
19094 rb_enc_str_buf_cat(p->delayed.token, p->lex.ptok,
len, enc);
19096 dispatch_delayed_token(p, tSTRING_CONTENT);
19100 heredoc_restore(p, &p->lex.strterm->u.heredoc);
19101 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
19104 SET_LEX_STATE(EXPR_END);
19105 return tSTRING_END;
19111 else if (p->heredoc_line_indent == -1) {
19116 p->heredoc_line_indent = 0;
19118 else if (whole_match_p(p, eos,
len, indent)) {
19119 dispatch_heredoc_end(p);
19121 heredoc_restore(p, &p->lex.strterm->u.heredoc);
19123 SET_LEX_STATE(EXPR_END);
19124 return tSTRING_END;
19127 if (!(func & STR_FUNC_EXPAND)) {
19129 ptr = RSTRING_PTR(p->lex.lastline);
19130 ptr_end = p->lex.pend;
19131 if (ptr_end > ptr) {
19132 switch (ptr_end[-1]) {
19134 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
19143 if (p->heredoc_indent > 0) {
19145 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
19147 p->heredoc_line_indent = 0;
19151 rb_str_cat(str, ptr, ptr_end - ptr);
19153 str = STR_NEW(ptr, ptr_end - ptr);
19154 if (!lex_eol_ptr_p(p, ptr_end)) rb_str_cat(str,
"\n", 1);
19156 if (p->heredoc_indent > 0) {
19159 if (nextc(p) == -1) {
19165 }
while (!whole_match_p(p, eos,
len, indent));
19171 enum yytokentype t = parser_peek_variable_name(p);
19172 if (p->heredoc_line_indent != -1) {
19173 if (p->heredoc_indent > p->heredoc_line_indent) {
19174 p->heredoc_indent = p->heredoc_line_indent;
19176 p->heredoc_line_indent = -1;
19185 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
19186 if (p->eofp)
goto error;
19190 if (c ==
'\\') p->heredoc_line_indent = -1;
19192 str = STR_NEW3(tok(p), toklen(p), enc, func);
19194 set_yylval_str(str);
19196 if (bol) nd_set_fl_newline(yylval.node);
19198 flush_string_content(p, enc);
19199 return tSTRING_CONTENT;
19201 tokadd(p, nextc(p));
19202 if (p->heredoc_indent > 0) {
19207 if ((c = nextc(p)) == -1)
goto error;
19208 }
while (!whole_match_p(p, eos,
len, indent));
19209 str = STR_NEW3(tok(p), toklen(p), enc, func);
19211 dispatch_heredoc_end(p);
19213 str = ripper_new_yylval(p, ripper_token2eventid(tSTRING_CONTENT),
19216 heredoc_restore(p, &p->lex.strterm->u.heredoc);
19218 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
19219 set_yylval_str(str);
19221 if (bol) nd_set_fl_newline(yylval.node);
19223 return tSTRING_CONTENT;
19233 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `%c' operator", WARN_I(c));
19236 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator", WARN_I(c));
19251 ID id = get_id(lhs);
19253 switch (id_type(
id)) {
19257# define ERR(mesg) yyerror0(mesg)
19259# define ERR(mesg) (dispatch2(param_error, WARN_S(mesg), lhs), ripper_error(p))
19262 ERR(
"formal argument cannot be a constant");
19265 ERR(
"formal argument cannot be an instance variable");
19268 ERR(
"formal argument cannot be a global variable");
19271 ERR(
"formal argument cannot be a class variable");
19274 ERR(
"formal argument must be local variable");
19278 shadowing_lvar(p,
id);
19285 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
19294 if (
len > 5 && name[nlen =
len - 5] ==
'-') {
19295 if (rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
19298 if (
len > 4 && name[nlen =
len - 4] ==
'-') {
19299 if (rb_memcicmp(name + nlen + 1,
"dos", 3) == 0)
19301 if (rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
19302 !(
len == 8 && rb_memcicmp(name,
"utf8-mac",
len) == 0))
19310parser_set_encode(
struct parser_params *p,
const char *name)
19312 int idx = rb_enc_find_index(name);
19317 excargs[1] = rb_sprintf(
"unknown encoding name: %s", name);
19319 excargs[0] = rb_eArgError;
19320 excargs[2] = rb_make_backtrace();
19321 rb_ary_unshift(excargs[2], rb_sprintf(
"%"PRIsVALUE
":%d", p->ruby_sourcefile_string, p->ruby_sourceline));
19322 rb_exc_raise(rb_make_exception(3, excargs));
19324 enc = rb_enc_from_index(idx);
19325 if (!rb_enc_asciicompat(enc)) {
19326 excargs[1] = rb_sprintf(
"%s is not ASCII compatible", rb_enc_name(enc));
19331 if (p->debug_lines) {
19332 VALUE lines = p->debug_lines;
19334 for (i = 0; i < n; ++i) {
19335 rb_enc_associate_index(
RARRAY_AREF(lines, i), idx);
19344 const char *ptr = p->lex.pbeg, *ptr_end = p->lex.pcur - 1;
19345 if (p->line_count != (p->has_shebang ? 2 : 1))
return 0;
19346 while (ptr < ptr_end) {
19347 if (!
ISSPACE(*ptr))
return 0;
19353typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
19354typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
19356static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
19359magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
19361 if (!comment_at_top(p)) {
19364 parser_set_encode(p, val);
19368parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
19371 case 't':
case 'T':
19376 case 'f':
case 'F':
19382 return parser_invalid_pragma_value(p, name, val);
19386parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
19388 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
19393parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
19395 int b = parser_get_bool(p, name, val);
19396 if (b >= 0) p->token_info_enabled = b;
19400parser_set_frozen_string_literal(
struct parser_params *p,
const char *name,
const char *val)
19404 if (p->token_seen) {
19405 rb_warning1(
"`%s' is ignored after any tokens", WARN_S(name));
19409 b = parser_get_bool(p, name, val);
19412 p->frozen_string_literal = b;
19416parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
19418 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
19419 if (*s ==
' ' || *s ==
'\t')
continue;
19420 if (*s ==
'#')
break;
19421 rb_warning1(
"`%s' is ignored unless in comment-only line", WARN_S(name));
19426 case 'n':
case 'N':
19428 p->ctxt.shareable_constant_value = shareable_none;
19432 case 'l':
case 'L':
19434 p->ctxt.shareable_constant_value = shareable_literal;
19438 case 'e':
case 'E':
19439 if (
STRCASECMP(val,
"experimental_copy") == 0) {
19440 p->ctxt.shareable_constant_value = shareable_copy;
19443 if (
STRCASECMP(val,
"experimental_everything") == 0) {
19444 p->ctxt.shareable_constant_value = shareable_everything;
19449 parser_invalid_pragma_value(p, name, val);
19452# if WARN_PAST_SCOPE
19454parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
19456 int b = parser_get_bool(p, name, val);
19457 if (b >= 0) p->past_scope_enabled = b;
19463 rb_magic_comment_setter_t func;
19464 rb_magic_comment_length_t length;
19468 {
"coding", magic_comment_encoding, parser_encode_length},
19469 {
"encoding", magic_comment_encoding, parser_encode_length},
19470 {
"frozen_string_literal", parser_set_frozen_string_literal},
19471 {
"shareable_constant_value", parser_set_shareable_constant_value},
19472 {
"warn_indent", parser_set_token_info},
19473# if WARN_PAST_SCOPE
19474 {
"warn_past_scope", parser_set_past_scope},
19479magic_comment_marker(
const char *str,
long len)
19486 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
19487 return str + i + 1;
19492 if (i + 1 >=
len)
return 0;
19493 if (str[i+1] !=
'-') {
19496 else if (str[i-1] !=
'-') {
19500 return str + i + 2;
19515 VALUE name = 0, val = 0;
19516 const char *beg, *end, *vbeg, *vend;
19517#define str_copy(_s, _p, _n) ((_s) \
19518 ? (void)(rb_str_resize((_s), (_n)), \
19519 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
19520 : (void)((_s) = STR_NEW((_p), (_n))))
19522 if (
len <= 7)
return FALSE;
19523 if (!!(beg = magic_comment_marker(str,
len))) {
19524 if (!(end = magic_comment_marker(beg, str +
len - beg)))
19528 len = end - beg - 3;
19538 for (;
len > 0 && *str; str++, --
len) {
19540 case '\'':
case '"':
case ':':
case ';':
19545 for (beg = str;
len > 0; str++, --
len) {
19547 case '\'':
case '"':
case ':':
case ';':
19558 if (!indicator)
return FALSE;
19562 do str++;
while (--
len > 0 &&
ISSPACE(*str));
19565 for (vbeg = ++str; --
len > 0 && *str !=
'"'; str++) {
19566 if (*str ==
'\\') {
19578 for (vbeg = str;
len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --
len, str++);
19582 while (
len > 0 && (*str ==
';' ||
ISSPACE(*str))) --
len, str++;
19586 if (
len)
return FALSE;
19590 str_copy(name, beg, n);
19591 s = RSTRING_PTR(name);
19592 for (i = 0; i < n; ++i) {
19593 if (s[i] ==
'-') s[i] =
'_';
19596 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
19599 n = (*mc->length)(p, vbeg, n);
19601 str_copy(val, vbeg, n);
19602 (*mc->func)(p, mc->name, RSTRING_PTR(val));
19605 }
while (++mc < magic_comments + numberof(magic_comments));
19607 str_copy(val, vbeg, vend - vbeg);
19616set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
19619 const char *beg = str;
19623 if (send - str <= 6)
return;
19625 case 'C':
case 'c': str += 6;
continue;
19626 case 'O':
case 'o': str += 5;
continue;
19627 case 'D':
case 'd': str += 4;
continue;
19628 case 'I':
case 'i': str += 3;
continue;
19629 case 'N':
case 'n': str += 2;
continue;
19630 case 'G':
case 'g': str += 1;
continue;
19631 case '=':
case ':':
19645 if (++str >= send)
return;
19648 if (*str !=
'=' && *str !=
':')
return;
19653 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
19654 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
19655 parser_set_encode(p, RSTRING_PTR(s));
19656 rb_str_resize(s, 0);
19662 int c = nextc0(p, FALSE);
19666 if (peek(p,
'!')) p->has_shebang = 1;
19669 if (!lex_eol_n_p(p, 2) &&
19670 (
unsigned char)p->lex.pcur[0] == 0xbb &&
19671 (
unsigned char)p->lex.pcur[1] == 0xbf) {
19672 p->enc = rb_utf8_encoding();
19675 if (p->debug_lines) {
19676 rb_enc_associate(p->lex.lastline, p->enc);
19679 p->lex.pbeg = p->lex.pcur;
19688 p->enc = rb_enc_get(p->lex.lastline);
19692#define ambiguous_operator(tok, op, syn) ( \
19693 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
19694 rb_warning0("even though it seems like "syn""))
19696#define ambiguous_operator(tok, op, syn) \
19697 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
19699#define warn_balanced(tok, op, syn) ((void) \
19700 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
19701 space_seen && !ISSPACE(c) && \
19702 (ambiguous_operator(tok, op, syn), 0)), \
19703 (enum yytokentype)(tok))
19706parse_rational(
struct parser_params *p,
char *str,
int len,
int seen_point)
19709 char *point = &str[seen_point];
19710 size_t fraclen =
len-seen_point-1;
19711 memmove(point, point+1, fraclen+1);
19712 v = rb_cstr_to_inum(str, 10, FALSE);
19713 return rb_rational_new(v, rb_int_positive_pow(10, fraclen));
19716static enum yytokentype
19719 yyerror0(
"numeric literal without digits");
19720 if (peek(p,
'_')) nextc(p);
19722 return set_integer_literal(p,
INT2FIX(0), 0);
19725static enum yytokentype
19728 int is_float, seen_point, seen_e, nondigit;
19731 is_float = seen_point = seen_e = nondigit = 0;
19732 SET_LEX_STATE(EXPR_END);
19734 if (c ==
'-' || c ==
'+') {
19739 int start = toklen(p);
19741 if (c ==
'x' || c ==
'X') {
19747 if (nondigit)
break;
19754 }
while ((c = nextc(p)) != -1);
19758 if (toklen(p) == start) {
19759 return no_digits(p);
19761 else if (nondigit)
goto trailing_uc;
19762 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19763 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 16, FALSE), suffix);
19765 if (c ==
'b' || c ==
'B') {
19768 if (c ==
'0' || c ==
'1') {
19771 if (nondigit)
break;
19775 if (c !=
'0' && c !=
'1')
break;
19778 }
while ((c = nextc(p)) != -1);
19782 if (toklen(p) == start) {
19783 return no_digits(p);
19785 else if (nondigit)
goto trailing_uc;
19786 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19787 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 2, FALSE), suffix);
19789 if (c ==
'd' || c ==
'D') {
19795 if (nondigit)
break;
19802 }
while ((c = nextc(p)) != -1);
19806 if (toklen(p) == start) {
19807 return no_digits(p);
19809 else if (nondigit)
goto trailing_uc;
19810 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19811 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 10, FALSE), suffix);
19817 if (c ==
'o' || c ==
'O') {
19820 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
19821 return no_digits(p);
19824 if (c >=
'0' && c <=
'7') {
19829 if (nondigit)
break;
19833 if (c <
'0' || c >
'9')
break;
19834 if (c >
'7')
goto invalid_octal;
19837 }
while ((c = nextc(p)) != -1);
19838 if (toklen(p) > start) {
19841 if (nondigit)
goto trailing_uc;
19842 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19843 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 8, FALSE), suffix);
19850 if (c >
'7' && c <=
'9') {
19852 yyerror0(
"Invalid octal digit");
19854 else if (c ==
'.' || c ==
'e' || c ==
'E') {
19859 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19860 return set_integer_literal(p,
INT2FIX(0), suffix);
19866 case '0':
case '1':
case '2':
case '3':
case '4':
19867 case '5':
case '6':
case '7':
case '8':
case '9':
19873 if (nondigit)
goto trailing_uc;
19874 if (seen_point || seen_e) {
19879 if (c0 == -1 || !
ISDIGIT(c0)) {
19885 seen_point = toklen(p);
19904 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
19910 tokadd(p, nondigit);
19914 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
19918 if (nondigit)
goto decode_num;
19932 literal_flush(p, p->lex.pcur - 1);
19933 YYLTYPE loc = RUBY_INIT_YYLLOC();
19934 compile_error(p,
"trailing `%c' in number", nondigit);
19935 parser_show_error_line(p, &loc);
19939 enum yytokentype
type = tFLOAT;
19942 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
19943 if (suffix & NUM_SUFFIX_R) {
19945 v = parse_rational(p, tok(p), toklen(p), seen_point);
19948 double d =
strtod(tok(p), 0);
19949 if (
errno == ERANGE) {
19950 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
19955 return set_number_literal(p, v,
type, suffix);
19957 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19958 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 10, FALSE), suffix);
19961static enum yytokentype
19969 SET_LEX_STATE(EXPR_VALUE);
19974 compile_error(p,
"incomplete character syntax");
19977 if (rb_enc_isspace(c, p->enc)) {
19979 int c2 = escaped_control_code(c);
19981 WARN_SPACE_CHAR(c2,
"?");
19986 SET_LEX_STATE(EXPR_VALUE);
19991 if (!parser_isascii(p)) {
19992 if (tokadd_mbchar(p, c) == -1)
return 0;
19994 else if ((rb_enc_isalnum(c, p->enc) || c ==
'_') &&
19995 !lex_eol_p(p) && is_identchar(p, p->lex.pcur, p->lex.pend, p->enc)) {
19997 const char *start = p->lex.pcur - 1, *ptr = start;
19999 int n = parser_precise_mbclen(p, ptr);
20000 if (n < 0)
return -1;
20002 }
while (!lex_eol_ptr_p(p, ptr) && is_identchar(p, ptr, p->lex.pend, p->enc));
20003 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
20004 " a conditional operator, put a space after `?'",
20005 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
20009 else if (c ==
'\\') {
20010 if (peek(p,
'u')) {
20012 enc = rb_utf8_encoding();
20013 tokadd_utf8(p, &enc, -1, 0, 0);
20015 else if (!
ISASCII(c = peekc(p))) {
20017 if (tokadd_mbchar(p, c) == -1)
return 0;
20020 c = read_escape(p, 0);
20028 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
20029 set_yylval_str(lit);
20030 SET_LEX_STATE(EXPR_END);
20034static enum yytokentype
20035parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
20038 const char *ptok = p->lex.pcur;
20046 if (c == -1)
goto unterminated;
20049 if (!
ISASCII(c))
goto unknown;
20054 if (rb_enc_isalnum(term, p->enc) || !parser_isascii(p)) {
20057 c = parser_precise_mbclen(p, p->lex.pcur);
20058 if (c < 0)
return 0;
20060 yyerror0(
"unknown type of %string");
20066 compile_error(p,
"unterminated quoted string meets end of file");
20070 if (term ==
'(') term =
')';
20071 else if (term ==
'[') term =
']';
20072 else if (term ==
'{') term =
'}';
20073 else if (term ==
'<') term =
'>';
20076 p->lex.ptok = ptok-1;
20079 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
20080 return tSTRING_BEG;
20083 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
20084 return tSTRING_BEG;
20087 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
20091 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
20092 return tQWORDS_BEG;
20095 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
20096 return tSYMBOLS_BEG;
20099 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
20100 return tQSYMBOLS_BEG;
20103 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
20104 return tXSTRING_BEG;
20107 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
20108 return tREGEXP_BEG;
20111 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
20112 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
20116 yyerror0(
"unknown type of %string");
20120 if ((c = nextc(p)) ==
'=') {
20121 set_yylval_id(
'%');
20122 SET_LEX_STATE(EXPR_BEG);
20125 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
20128 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20130 return warn_balanced(
'%',
"%%",
"string literal");
20137 if (tokadd_mbchar(p, c) == -1)
return -1;
20139 }
while (parser_is_identchar(p));
20147 ID ident = TOK_INTERN();
20149 set_yylval_name(ident);
20159 unsigned long n = ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &
len, &overflow);
20160 const unsigned long nth_ref_max =
20165 if (overflow || n > nth_ref_max) {
20167 rb_warn1(
"`%s' is too big for a number variable, always nil", WARN_S(tok(p)));
20175static enum yytokentype
20176parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
20178 const char *ptr = p->lex.pcur;
20181 SET_LEX_STATE(EXPR_END);
20182 p->lex.ptok = ptr - 1;
20188 if (parser_is_identchar(p)) {
20220 if (parser_is_identchar(p)) {
20221 if (tokadd_mbchar(p, c) == -1)
return 0;
20229 set_yylval_name(TOK_INTERN());
20236 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
20241 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
20244 case '1':
case '2':
case '3':
20245 case '4':
case '5':
case '6':
20246 case '7':
case '8':
case '9':
20251 }
while (c != -1 &&
ISDIGIT(c));
20253 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
20255 c = parse_numvar(p);
20256 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
20260 if (!parser_is_identchar(p)) {
20261 YYLTYPE loc = RUBY_INIT_YYLLOC();
20263 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
20267 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
20269 parser_show_error_line(p, &loc);
20270 set_yylval_noname();
20278 if (tokadd_ident(p, c))
return 0;
20279 SET_LEX_STATE(EXPR_END);
20280 if (VALID_SYMNAME_P(tok(p), toklen(p), p->enc, ID_GLOBAL)) {
20284 compile_error(p,
"`%.*s' is not allowed as a global variable name", toklen(p), tok(p));
20285 set_yylval_noname();
20294 if (n < 0)
return false;
20296 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
20299 if (p->max_numparam == ORDINAL_PARAM) {
20300 compile_error(p,
"ordinary parameter is defined");
20303 struct vtable *args = p->lvtbl->args;
20304 if (p->max_numparam < n) {
20305 p->max_numparam = n;
20307 while (n > args->pos) {
20308 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
20314static enum yytokentype
20315parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
20317 const char *ptr = p->lex.pcur;
20318 enum yytokentype result = tIVAR;
20319 register int c = nextc(p);
20322 p->lex.ptok = ptr - 1;
20330 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
20331 if (c == -1 || !parser_is_identchar(p)) {
20333 RUBY_SET_YYLLOC(loc);
20334 if (result == tIVAR) {
20335 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
20338 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
20340 parser_show_error_line(p, &loc);
20341 set_yylval_noname();
20342 SET_LEX_STATE(EXPR_END);
20347 RUBY_SET_YYLLOC(loc);
20348 if (result == tIVAR) {
20349 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
20352 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
20354 parser_show_error_line(p, &loc);
20355 set_yylval_noname();
20356 SET_LEX_STATE(EXPR_END);
20360 if (tokadd_ident(p, c))
return 0;
20365static enum yytokentype
20368 enum yytokentype result;
20370 const enum lex_state_e last_state = p->lex.state;
20372 int enforce_keyword_end = 0;
20376 if (tokadd_mbchar(p, c) == -1)
return 0;
20378 }
while (parser_is_identchar(p));
20379 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
20383 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
20384 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
20385 result = tIDENTIFIER;
20389 result = tCONSTANT;
20394 if (IS_LABEL_POSSIBLE()) {
20395 if (IS_LABEL_SUFFIX(0)) {
20396 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
20398 set_yylval_name(TOK_INTERN());
20404 if (!
NIL_P(peek_end_expect_token_locations(p))) {
20406 int lineno, column;
20407 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
20409 end_loc = peek_end_expect_token_locations(p);
20410 lineno =
NUM2INT(rb_ary_entry(end_loc, 0));
20411 column =
NUM2INT(rb_ary_entry(end_loc, 1));
20414 rb_parser_printf(p,
"enforce_keyword_end check. current: (%d, %d), peek: (%d, %d)\n",
20415 p->ruby_sourceline, beg_pos, lineno, column);
20418 if ((p->ruby_sourceline > lineno) && (beg_pos <= column)) {
20421 if ((IS_lex_state(EXPR_DOT)) && (kw = rb_reserved_word(tok(p), toklen(p))) && (kw && kw->id[0] == keyword_end)) {
20422 if (p->debug) rb_parser_printf(p,
"enforce_keyword_end is enabled\n");
20423 enforce_keyword_end = 1;
20433 kw = rb_reserved_word(tok(p), toklen(p));
20435 enum lex_state_e state = p->lex.state;
20436 if (IS_lex_state_for(state, EXPR_FNAME)) {
20437 SET_LEX_STATE(EXPR_ENDFN);
20438 set_yylval_name(rb_intern2(tok(p), toklen(p)));
20441 SET_LEX_STATE(kw->state);
20442 if (IS_lex_state(EXPR_BEG)) {
20443 p->command_start = TRUE;
20445 if (kw->id[0] == keyword_do) {
20446 if (lambda_beginning_p()) {
20447 p->lex.lpar_beg = -1;
20448 return keyword_do_LAMBDA;
20450 if (COND_P())
return keyword_do_cond;
20451 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
20452 return keyword_do_block;
20455 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS)))
20458 if (kw->id[0] != kw->id[1])
20459 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
20465 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
20467 SET_LEX_STATE(EXPR_CMDARG);
20470 SET_LEX_STATE(EXPR_ARG);
20473 else if (p->lex.state == EXPR_FNAME) {
20474 SET_LEX_STATE(EXPR_ENDFN);
20477 SET_LEX_STATE(EXPR_END);
20480 ident = tokenize_ident(p);
20481 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
20482 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
20483 (result == tIDENTIFIER) &&
20484 (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) {
20485 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
20496 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
20500static enum yytokentype
20504 int space_seen = 0;
20507 enum lex_state_e last_state;
20508 int fallthru = FALSE;
20509 int token_seen = p->token_seen;
20511 if (p->lex.strterm) {
20512 if (strterm_is_heredoc(p->lex.strterm)) {
20514 return here_document(p, &p->lex.strterm->u.heredoc);
20518 return parse_string(p, &p->lex.strterm->u.literal);
20521 cmd_state = p->command_start;
20522 p->command_start = FALSE;
20523 p->token_seen = TRUE;
20528 last_state = p->lex.state;
20529 switch (c = nextc(p)) {
20536 if (!
NIL_P(p->end_expect_token_locations) &&
RARRAY_LEN(p->end_expect_token_locations) > 0) {
20537 pop_end_expect_token_locations(p);
20538 RUBY_SET_YYLLOC_OF_DUMMY_END(*p->yylloc);
20543 RUBY_SET_YYLLOC(*p->yylloc);
20544 return END_OF_INPUT;
20550 case ' ':
case '\t':
case '\f':
20553 while ((c = nextc(p))) {
20558 case ' ':
case '\t':
case '\f':
20567 dispatch_scan_event(p, tSP);
20574 p->token_seen = token_seen;
20576 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
20577 if (comment_at_top(p)) {
20578 set_file_encoding(p, p->lex.pcur, p->lex.pend);
20582 dispatch_scan_event(p, tCOMMENT);
20586 p->token_seen = token_seen;
20587 VALUE prevline = p->lex.lastline;
20588 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
20589 !IS_lex_state(EXPR_LABELED));
20590 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
20592 dispatch_scan_event(p, tIGNORED_NL);
20595 if (!c && p->ctxt.in_kwarg) {
20596 goto normal_newline;
20601 switch (c = nextc(p)) {
20602 case ' ':
case '\t':
case '\f':
case '\r':
20609 dispatch_scan_event(p, tSP);
20615 dispatch_delayed_token(p, tIGNORED_NL);
20616 if (peek(p,
'.') == (c ==
'&')) {
20618 dispatch_scan_event(p, tSP);
20623 p->ruby_sourceline--;
20624 p->lex.nextline = p->lex.lastline;
20625 set_lastline(p, prevline);
20630 RUBY_SET_YYLLOC(*p->yylloc);
20632 goto normal_newline;
20636 p->command_start = TRUE;
20637 SET_LEX_STATE(EXPR_BEG);
20641 if ((c = nextc(p)) ==
'*') {
20642 if ((c = nextc(p)) ==
'=') {
20643 set_yylval_id(idPow);
20644 SET_LEX_STATE(EXPR_BEG);
20648 if (IS_SPCARG(c)) {
20649 rb_warning0(
"`**' interpreted as argument prefix");
20652 else if (IS_BEG()) {
20656 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
20661 set_yylval_id(
'*');
20662 SET_LEX_STATE(EXPR_BEG);
20666 if (IS_SPCARG(c)) {
20667 rb_warning0(
"`*' interpreted as argument prefix");
20670 else if (IS_BEG()) {
20674 c = warn_balanced(
'*',
"*",
"argument prefix");
20677 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20682 if (IS_AFTER_OPERATOR()) {
20683 SET_LEX_STATE(EXPR_ARG);
20689 SET_LEX_STATE(EXPR_BEG);
20703 if (word_match_p(p,
"begin", 5)) {
20704 int first_p = TRUE;
20707 dispatch_scan_event(p, tEMBDOC_BEG);
20711 dispatch_scan_event(p, tEMBDOC);
20716 compile_error(p,
"embedded document meets end of file");
20717 return END_OF_INPUT;
20719 if (c ==
'=' && word_match_p(p,
"end", 3)) {
20725 dispatch_scan_event(p, tEMBDOC_END);
20730 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20731 if ((c = nextc(p)) ==
'=') {
20732 if ((c = nextc(p)) ==
'=') {
20741 else if (c ==
'>') {
20750 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
20752 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
20753 enum yytokentype token = heredoc_identifier(p);
20754 if (token)
return token < 0 ? 0 : token;
20756 if (IS_AFTER_OPERATOR()) {
20757 SET_LEX_STATE(EXPR_ARG);
20760 if (IS_lex_state(EXPR_CLASS))
20761 p->command_start = TRUE;
20762 SET_LEX_STATE(EXPR_BEG);
20765 if ((c = nextc(p)) ==
'>') {
20772 if ((c = nextc(p)) ==
'=') {
20773 set_yylval_id(idLTLT);
20774 SET_LEX_STATE(EXPR_BEG);
20778 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
20784 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20785 if ((c = nextc(p)) ==
'=') {
20789 if ((c = nextc(p)) ==
'=') {
20790 set_yylval_id(idGTGT);
20791 SET_LEX_STATE(EXPR_BEG);
20801 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
20802 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
20803 p->lex.ptok = p->lex.pcur-1;
20804 return tSTRING_BEG;
20807 if (IS_lex_state(EXPR_FNAME)) {
20808 SET_LEX_STATE(EXPR_ENDFN);
20811 if (IS_lex_state(EXPR_DOT)) {
20813 SET_LEX_STATE(EXPR_CMDARG);
20815 SET_LEX_STATE(EXPR_ARG);
20818 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
20819 return tXSTRING_BEG;
20822 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
20823 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
20824 p->lex.ptok = p->lex.pcur-1;
20825 return tSTRING_BEG;
20828 return parse_qmark(p, space_seen);
20831 if ((c = nextc(p)) ==
'&') {
20832 SET_LEX_STATE(EXPR_BEG);
20833 if ((c = nextc(p)) ==
'=') {
20834 set_yylval_id(idANDOP);
20835 SET_LEX_STATE(EXPR_BEG);
20841 else if (c ==
'=') {
20842 set_yylval_id(
'&');
20843 SET_LEX_STATE(EXPR_BEG);
20846 else if (c ==
'.') {
20847 set_yylval_id(idANDDOT);
20848 SET_LEX_STATE(EXPR_DOT);
20852 if (IS_SPCARG(c)) {
20854 (c = peekc_n(p, 1)) == -1 ||
20855 !(c ==
'\'' || c ==
'"' ||
20856 is_identchar(p, (p->lex.pcur+1), p->lex.pend, p->enc))) {
20857 rb_warning0(
"`&' interpreted as argument prefix");
20861 else if (IS_BEG()) {
20865 c = warn_balanced(
'&',
"&",
"argument prefix");
20867 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20871 if ((c = nextc(p)) ==
'|') {
20872 SET_LEX_STATE(EXPR_BEG);
20873 if ((c = nextc(p)) ==
'=') {
20874 set_yylval_id(idOROP);
20875 SET_LEX_STATE(EXPR_BEG);
20879 if (IS_lex_state_for(last_state, EXPR_BEG)) {
20887 set_yylval_id(
'|');
20888 SET_LEX_STATE(EXPR_BEG);
20891 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
20897 if (IS_AFTER_OPERATOR()) {
20898 SET_LEX_STATE(EXPR_ARG);
20906 set_yylval_id(
'+');
20907 SET_LEX_STATE(EXPR_BEG);
20910 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
20911 SET_LEX_STATE(EXPR_BEG);
20914 return parse_numeric(p,
'+');
20918 SET_LEX_STATE(EXPR_BEG);
20920 return warn_balanced(
'+',
"+",
"unary operator");
20924 if (IS_AFTER_OPERATOR()) {
20925 SET_LEX_STATE(EXPR_ARG);
20933 set_yylval_id(
'-');
20934 SET_LEX_STATE(EXPR_BEG);
20938 SET_LEX_STATE(EXPR_ENDFN);
20941 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
20942 SET_LEX_STATE(EXPR_BEG);
20945 return tUMINUS_NUM;
20949 SET_LEX_STATE(EXPR_BEG);
20951 return warn_balanced(
'-',
"-",
"unary operator");
20954 int is_beg = IS_BEG();
20955 SET_LEX_STATE(EXPR_BEG);
20956 if ((c = nextc(p)) ==
'.') {
20957 if ((c = nextc(p)) ==
'.') {
20958 if (p->ctxt.in_argdef) {
20959 SET_LEX_STATE(EXPR_ENDARG);
20962 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
20963 rb_warn0(
"... at EOL, should be parenthesized?");
20965 else if (p->lex.lpar_beg >= 0 && p->lex.lpar_beg+1 == p->lex.paren_nest) {
20966 if (IS_lex_state_for(last_state, EXPR_LABEL))
20969 return is_beg ? tBDOT3 : tDOT3;
20972 return is_beg ? tBDOT2 : tDOT2;
20976 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
20977 parse_numeric(p,
'.');
20979 yyerror0(
"unexpected fraction part after numeric literal");
20982 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
20984 SET_LEX_STATE(EXPR_END);
20985 p->lex.ptok = p->lex.pcur;
20988 set_yylval_id(
'.');
20989 SET_LEX_STATE(EXPR_DOT);
20993 case '0':
case '1':
case '2':
case '3':
case '4':
20994 case '5':
case '6':
case '7':
case '8':
case '9':
20995 return parse_numeric(p, c);
21000 SET_LEX_STATE(EXPR_ENDFN);
21001 p->lex.paren_nest--;
21007 SET_LEX_STATE(EXPR_END);
21008 p->lex.paren_nest--;
21013 if (!p->lex.brace_nest--)
return tSTRING_DEND;
21016 SET_LEX_STATE(EXPR_END);
21017 p->lex.paren_nest--;
21023 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
21024 SET_LEX_STATE(EXPR_BEG);
21027 set_yylval_id(idCOLON2);
21028 SET_LEX_STATE(EXPR_DOT);
21031 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
21033 c = warn_balanced(
':',
":",
"symbol literal");
21034 SET_LEX_STATE(EXPR_BEG);
21039 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
21042 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
21048 SET_LEX_STATE(EXPR_FNAME);
21053 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
21054 return tREGEXP_BEG;
21056 if ((c = nextc(p)) ==
'=') {
21057 set_yylval_id(
'/');
21058 SET_LEX_STATE(EXPR_BEG);
21062 if (IS_SPCARG(c)) {
21063 arg_ambiguous(p,
'/');
21064 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
21065 return tREGEXP_BEG;
21067 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21068 return warn_balanced(
'/',
"/",
"regexp literal");
21071 if ((c = nextc(p)) ==
'=') {
21072 set_yylval_id(
'^');
21073 SET_LEX_STATE(EXPR_BEG);
21076 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21081 SET_LEX_STATE(EXPR_BEG);
21082 p->command_start = TRUE;
21086 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
21090 if (IS_AFTER_OPERATOR()) {
21091 if ((c = nextc(p)) !=
'@') {
21094 SET_LEX_STATE(EXPR_ARG);
21097 SET_LEX_STATE(EXPR_BEG);
21105 else if (!space_seen) {
21108 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
21111 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
21112 rb_warning0(
"parentheses after method name is interpreted as "
21113 "an argument list, not a decomposed argument");
21115 p->lex.paren_nest++;
21118 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
21122 p->lex.paren_nest++;
21123 if (IS_AFTER_OPERATOR()) {
21124 if ((c = nextc(p)) ==
']') {
21125 p->lex.paren_nest--;
21126 SET_LEX_STATE(EXPR_ARG);
21127 if ((c = nextc(p)) ==
'=') {
21134 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
21137 else if (IS_BEG()) {
21140 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
21143 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
21149 ++p->lex.brace_nest;
21150 if (lambda_beginning_p())
21152 else if (IS_lex_state(EXPR_LABELED))
21154 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
21156 else if (IS_lex_state(EXPR_ENDARG))
21160 if (c != tLBRACE) {
21161 p->command_start = TRUE;
21162 SET_LEX_STATE(EXPR_BEG);
21165 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
21167 ++p->lex.paren_nest;
21176 dispatch_scan_event(p, tSP);
21179 if (c ==
' ')
return tSP;
21185 return parse_percent(p, space_seen, last_state);
21188 return parse_gvar(p, last_state);
21191 return parse_atmark(p, last_state);
21194 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
21195 p->ruby__end__seen = 1;
21199 dispatch_scan_event(p, k__END__);
21201 return END_OF_INPUT;
21207 if (!parser_is_identchar(p)) {
21208 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
21217 return parse_ident(p, c, cmd_state);
21220static enum yytokentype
21223 enum yytokentype t;
21227 p->yylloc = yylloc;
21229 t = parser_yylex(p);
21231 if (has_delayed_token(p))
21232 dispatch_delayed_token(p, t);
21233 else if (t != END_OF_INPUT)
21234 dispatch_scan_event(p, t);
21239#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
21242node_new_internal(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment)
21244 NODE *n = rb_ast_newnode(p->ast,
type, size, alignment);
21246 rb_node_init(n,
type);
21254 nd_set_line(nd, loc->beg_pos.lineno);
21261 NODE *n = node_new_internal(p,
type, size, alignment);
21263 nd_set_loc(n, loc);
21264 nd_set_node_id(n, parser_get_node_id(p));
21268#define NODE_NEWNODE(node_type, type, loc) (type *)(node_newnode(p, node_type, sizeof(type), RUBY_ALIGNOF(type), loc))
21276 nd_tbl = local_tbl(p);
21278 n->nd_tbl = nd_tbl;
21279 n->nd_body = nd_body;
21280 n->nd_args = nd_args;
21289 n->nd_tbl = nd_tbl;
21290 n->nd_body = nd_body;
21291 n->nd_args = nd_args;
21300 n->nd_mid = nd_mid;
21301 n->nd_defn = nd_defn;
21310 n->nd_recv = nd_recv;
21311 n->nd_mid = nd_mid;
21312 n->nd_defn = nd_defn;
21321 n->nd_head = nd_head;
21322 n->nd_end = (
NODE *)n;
21332 n->nd_body = nd_body;
21333 n->nd_iter = nd_iter;
21342 n->nd_var = nd_var;
21359 n->nd_body = nd_body;
21368 n->nd_head = nd_head;
21369 n->nd_resq = nd_resq;
21370 n->nd_else = nd_else;
21379 n->nd_head = nd_head;
21380 n->nd_body = nd_body;
21381 n->nd_args = nd_args;
21390 n->nd_head = nd_head;
21392 n->nd_ensr = nd_ensr;
21401 n->nd_1st = nd_1st;
21402 n->nd_2nd = nd_2nd;
21411 n->nd_1st = nd_1st;
21412 n->nd_2nd = nd_2nd;
21421 n->nd_stts = nd_stts;
21429 n->nd_head = nd_head;
21438 n->nd_cond = nd_cond;
21439 n->nd_body = nd_body;
21440 n->nd_else = nd_else;
21449 n->nd_cond = nd_cond;
21450 n->nd_body = nd_body;
21451 n->nd_else = nd_else;
21460 NODE *scope = NEW_SCOPE(0, nd_body, loc);
21462 n->nd_cpath = nd_cpath;
21463 n->nd_body = scope;
21464 n->nd_super = nd_super;
21473 NODE *scope = NEW_SCOPE(0, nd_body, loc);
21475 n->nd_recv = nd_recv;
21476 n->nd_body = scope;
21485 NODE *scope = NEW_SCOPE(0, nd_body, loc);
21487 n->nd_cpath = nd_cpath;
21488 n->nd_body = scope;
21497 NODE *scope = NEW_SCOPE(nd_args, nd_body, loc);
21499 n->nd_body = scope;
21509 NODE *scope = NEW_SCOPE(nd_args, nd_body, loc);
21511 n->nd_body = scope;
21520 n->nd_head = nd_head;
21521 n->nd_body = nd_body;
21531 n->nd_body = nd_body;
21540 n->nd_head = nd_head;
21541 n->nd_body = nd_body;
21550 n->nd_head = nd_head;
21551 n->nd_body = nd_body;
21552 n->nd_next = nd_next;
21561 n->nd_head = nd_head;
21562 n->nd_body = nd_body;
21563 n->nd_next = nd_next;
21572 n->nd_cond = nd_cond;
21573 n->nd_body = nd_body;
21574 n->nd_state = nd_state;
21583 n->nd_cond = nd_cond;
21584 n->nd_body = nd_body;
21585 n->nd_state = nd_state;
21594 n->nd_head = nd_head;
21595 n->nd_mid = nd_mid;
21604 n->nd_mid = nd_mid;
21613 n->nd_beg = nd_beg;
21614 n->nd_end = nd_end;
21623 n->nd_beg = nd_beg;
21624 n->nd_end = nd_end;
21666 n->nd_args = nd_args;
21683 n->nd_recv = nd_recv;
21684 n->nd_value = nd_value;
21694 n->nd_recv = nd_recv;
21695 n->nd_value = nd_value;
21705 n->nd_head = nd_head;
21716 n->nd_head = nd_head;
21717 n->as.nd_alen = nd_alen;
21718 n->nd_next = nd_next;
21735 n->nd_head = nd_head;
21745 n->nd_head = nd_head;
21747 n->nd_args = nd_args;
21756 n->nd_vid = nd_vid;
21757 n->nd_value = nd_value;
21766 n->nd_vid = nd_vid;
21767 n->nd_value = nd_value;
21776 n->nd_vid = nd_vid;
21777 n->nd_value = nd_value;
21786 n->nd_vid = nd_vid;
21787 n->nd_value = nd_value;
21796 n->nd_vid = nd_vid;
21797 n->nd_value = nd_value;
21806 n->nd_recv = nd_recv;
21807 n->nd_mid = nd_mid;
21808 n->nd_index = index;
21809 n->nd_rvalue = rvalue;
21818 n->nd_recv = nd_recv;
21819 n->nd_value = nd_value;
21820 n->nd_vid = nd_vid;
21821 n->nd_mid = nd_mid;
21822 n->nd_aid = nd_aid;
21831 n->nd_head = nd_head;
21832 n->nd_value = nd_value;
21841 n->nd_head = nd_head;
21842 n->nd_value = nd_value;
21851 n->nd_vid = nd_vid;
21860 n->nd_vid = nd_vid;
21869 n->nd_vid = nd_vid;
21878 n->nd_vid = nd_vid;
21887 n->nd_vid = nd_vid;
21896 n->nd_vid = nd_vid;
21905 n->nd_nth = nd_nth;
21914 n->nd_nth = nd_nth;
21923 n->nd_lit = nd_lit;
21932 n->nd_lit = nd_lit;
21942 n->nd_lit = nd_lit;
21943 n->as.nd_alen = nd_alen;
21952 return rb_node_dstr_new0(p, nd_lit, 1, 0, loc);
21959 n->nd_lit = nd_lit;
21968 n->nd_lit = nd_lit;
21969 n->nd_alen = nd_alen;
21979 n->nd_lit = nd_lit;
21980 n->nd_alen = nd_alen;
21990 n->nd_body = nd_body;
21999 n->nd_recv = nd_recv;
22000 n->nd_mid = nd_mid;
22001 n->nd_args = nd_args;
22010 n->nd_recv = nd_recv;
22011 n->nd_mid = nd_mid;
22012 n->nd_args = nd_args;
22021 n->nd_mid = nd_mid;
22022 n->nd_args = nd_args;
22031 n->nd_recv = nd_recv;
22032 n->nd_mid = nd_mid;
22033 n->nd_args = nd_args;
22042 n->nd_mid = nd_mid;
22051 n->nd_body = nd_body;
22069 n->nd_pid = nd_pid;
22070 n->nd_plen = nd_plen;
22080 n->nd_body = nd_body;
22090 n->nd_body = nd_body;
22100 n->nd_1st = nd_1st;
22101 n->nd_2nd = nd_2nd;
22110 n->nd_head = nd_head;
22111 n->nd_body = nd_body;
22120 n->nd_head = nd_head;
22121 n->nd_body = nd_body;
22130 n->nd_head = nd_head;
22140 n->nd_body = nd_body;
22149 n->nd_1st = nd_1st;
22150 n->nd_2nd = nd_2nd;
22159 n->nd_alias = nd_alias;
22160 n->nd_orig = nd_orig;
22169 n->nd_undef = nd_undef;
22186 n->nd_head = nd_head;
22195 n->nd_body = nd_body;
22204 n->nd_recv = nd_recv;
22205 n->nd_mid = nd_mid;
22206 n->nd_args = nd_args;
22216 n->pre_args = pre_args;
22217 n->rest_arg = rest_arg;
22218 n->post_args = post_args;
22227 n->nd_pconst = nd_pconst;
22228 n->nd_pkwargs = nd_pkwargs;
22229 n->nd_pkwrestarg = nd_pkwrestarg;
22239 n->pre_rest_arg = pre_rest_arg;
22241 n->post_rest_arg = post_rest_arg;
22250 n->nd_vid = nd_vid;
22251 n->nd_value = nd_value;
22252 n->nd_else = nd_else;
22261 n->nd_head = nd_head;
22262 n->nd_value = nd_value;
22263 n->nd_aid = nd_aid;
22278static rb_node_ripper_t *
22281 rb_node_ripper_t *n = NODE_NEWNODE(NODE_RIPPER, rb_node_ripper_t, loc);
22282 n->nd_vid = nd_vid;
22283 n->nd_rval = nd_rval;
22284 n->nd_cval = nd_cval;
22289static rb_node_ripper_values_t *
22292 rb_node_ripper_values_t *n = NODE_NEWNODE(NODE_RIPPER_VALUES, rb_node_ripper_values_t, loc);
22293 n->nd_val1 = nd_val1;
22294 n->nd_val2 = nd_val2;
22295 n->nd_val3 = nd_val3;
22306 n->nd_stts = nd_stts;
22316 n->nd_stts = nd_stts;
22335 n->save.cur_arg = p->cur_arg;
22336 n->save.numparam_save = 0;
22337 n->save.max_numparam = 0;
22338 n->save.ctxt = p->ctxt;
22342 n->dot_or_colon =
Qnil;
22354 n->save.numparam_save = numparam_push(p);
22355 n->save.max_numparam = p->max_numparam;
22360static enum node_type
22361nodetype(
NODE *node)
22363 return (
enum node_type)nd_type(node);
22367nodeline(
NODE *node)
22369 return nd_line(node);
22373newline_node(
NODE *node)
22376 node = remove_begin(node);
22377 nd_set_fl_newline(node);
22387 nd_set_line(node, nd_line(orig));
22393 rb_compile_warning(p->ruby_sourcefile, nd_line(node),
"%s", mesg);
22399 rb_compile_warn(p->ruby_sourcefile, nd_line(node),
"%s", mesg);
22405 NODE *end, *h = head, *nd;
22407 if (tail == 0)
return head;
22409 if (h == 0)
return tail;
22410 switch (nd_type(h)) {
22412 h = end = NEW_BLOCK(head, &head->nd_loc);
22416 end = RNODE_BLOCK(h)->nd_end;
22420 nd = RNODE_BLOCK(end)->nd_head;
22421 switch (nd_type(nd)) {
22428 parser_warning(p, tail,
"statement not reached");
22436 if (!nd_type_p(tail, NODE_BLOCK)) {
22437 tail = NEW_BLOCK(tail, &tail->nd_loc);
22439 RNODE_BLOCK(end)->nd_next = tail;
22440 RNODE_BLOCK(h)->nd_end = RNODE_BLOCK(tail)->nd_end;
22441 nd_set_last_loc(head, nd_last_loc(tail));
22451 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
22452 if (RNODE_LIST(list)->nd_next) {
22453 last = RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end;
22459 RNODE_LIST(list)->as.nd_alen += 1;
22460 RNODE_LIST(last)->nd_next = NEW_LIST(item, &item->nd_loc);
22461 RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end = RNODE_LIST(last)->nd_next;
22463 nd_set_last_loc(list, nd_last_loc(item));
22470list_concat(
NODE *head,
NODE *tail)
22474 if (RNODE_LIST(head)->nd_next) {
22475 last = RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end;
22481 RNODE_LIST(head)->as.nd_alen += RNODE_LIST(tail)->as.nd_alen;
22482 RNODE_LIST(last)->nd_next = tail;
22483 if (RNODE_LIST(tail)->nd_next) {
22484 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = RNODE_LIST(RNODE_LIST(tail)->nd_next)->as.nd_end;
22487 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = tail;
22490 nd_set_last_loc(head, nd_last_loc(tail));
22498 if (
NIL_P(tail))
return 1;
22499 if (!rb_enc_compatible(head, tail)) {
22500 compile_error(p,
"string literal encodings differ (%s / %s)",
22501 rb_enc_name(rb_enc_get(head)),
22502 rb_enc_name(rb_enc_get(tail)));
22503 rb_str_resize(head, 0);
22504 rb_str_resize(tail, 0);
22507 rb_str_buf_append(head, tail);
22514 if (htype != NODE_DSTR)
return Qfalse;
22515 if (RNODE_DSTR(head)->nd_next) {
22516 head = RNODE_LIST(RNODE_LIST(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_head;
22517 if (!head || !nd_type_p(head, NODE_STR))
return Qfalse;
22519 const VALUE lit = RNODE_DSTR(head)->nd_lit;
22528 enum node_type htype;
22531 if (!head)
return tail;
22532 if (!tail)
return head;
22534 htype = nd_type(head);
22535 if (htype == NODE_EVSTR) {
22536 head = new_dstr(p, head, loc);
22539 if (p->heredoc_indent > 0) {
22542 head = str2dstr(p, head);
22544 return list_append(p, head, tail);
22549 switch (nd_type(tail)) {
22551 if ((lit = string_literal_head(p, htype, head)) !=
Qfalse) {
22555 lit = RNODE_DSTR(head)->nd_lit;
22557 if (htype == NODE_STR) {
22558 if (!literal_concat0(p, lit, RNODE_STR(tail)->nd_lit)) {
22560 rb_discard_node(p, head);
22561 rb_discard_node(p, tail);
22564 rb_discard_node(p, tail);
22567 list_append(p, head, tail);
22572 if (htype == NODE_STR) {
22573 if (!literal_concat0(p, RNODE_STR(head)->nd_lit, RNODE_DSTR(tail)->nd_lit))
22575 RNODE_DSTR(tail)->nd_lit = RNODE_STR(head)->nd_lit;
22576 rb_discard_node(p, head);
22579 else if (
NIL_P(RNODE_DSTR(tail)->nd_lit)) {
22581 RNODE_DSTR(head)->as.nd_alen += RNODE_DSTR(tail)->as.nd_alen - 1;
22582 if (!RNODE_DSTR(head)->nd_next) {
22583 RNODE_DSTR(head)->nd_next = RNODE_DSTR(tail)->nd_next;
22585 else if (RNODE_DSTR(tail)->nd_next) {
22586 RNODE_DSTR(RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_next = RNODE_DSTR(tail)->nd_next;
22587 RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end = RNODE_DSTR(RNODE_DSTR(tail)->nd_next)->as.nd_end;
22589 rb_discard_node(p, tail);
22591 else if ((lit = string_literal_head(p, htype, head)) !=
Qfalse) {
22592 if (!literal_concat0(p, lit, RNODE_DSTR(tail)->nd_lit))
22594 RNODE_DSTR(tail)->nd_lit =
Qnil;
22598 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));
22603 if (htype == NODE_STR) {
22604 head = str2dstr(p, head);
22605 RNODE_DSTR(head)->as.nd_alen = 1;
22607 list_append(p, head, tail);
22614nd_copy_flag(
NODE *new_node,
NODE *old_node)
22616 if (nd_fl_newline(old_node)) nd_set_fl_newline(new_node);
22617 nd_set_line(new_node, nd_line(old_node));
22618 new_node->nd_loc = old_node->nd_loc;
22619 new_node->node_id = old_node->node_id;
22626 nd_copy_flag(new_node, node);
22627 RNODE_DSTR(new_node)->nd_lit = RNODE_STR(node)->nd_lit;
22628 RNODE_DSTR(new_node)->as.nd_alen = 0;
22629 RNODE_DSTR(new_node)->nd_next = 0;
22630 RNODE_STR(node)->nd_lit = 0;
22638 if (nd_type_p(node, NODE_EVSTR)) {
22639 node = new_dstr(p, node, &node->nd_loc);
22650 switch (nd_type(node)) {
22652 return str2dstr(p, node);
22659 return NEW_EVSTR(head, loc);
22665 VALUE lit = STR_NEW0();
22666 NODE *dstr = NEW_DSTR(lit, loc);
22668 return list_append(p, dstr, node);
22678 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
22679 nd_set_line(expr, op_loc->beg_pos.lineno);
22688 opcall = NEW_OPCALL(recv,
id, 0, loc);
22689 nd_set_line(opcall, op_loc->beg_pos.lineno);
22696 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
22697 nd_set_line(qcall, op_loc->beg_pos.lineno);
22705 if (block) block_dup_check(p, args, block);
22706 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
22707 if (block) ret = method_add_block(p, ret, block, loc);
22712#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? RNODE_ONCE(node)->nd_body : node)
22715last_expr_once_body(
NODE *node)
22717 if (!node)
return 0;
22718 return nd_once_body(node);
22725 int line = op_loc->beg_pos.lineno;
22730 if ((n = last_expr_once_body(node1)) != 0) {
22731 switch (nd_type(n)) {
22734 NODE *match = NEW_MATCH2(node1, node2, loc);
22735 nd_set_line(match, line);
22740 if (RB_TYPE_P(RNODE_LIT(n)->nd_lit,
T_REGEXP)) {
22741 const VALUE lit = RNODE_LIT(n)->nd_lit;
22742 NODE *match = NEW_MATCH2(node1, node2, loc);
22743 RNODE_MATCH2(match)->nd_args = reg_named_capture_assign(p, lit, loc);
22744 nd_set_line(match, line);
22750 if ((n = last_expr_once_body(node2)) != 0) {
22753 switch (nd_type(n)) {
22755 if (!RB_TYPE_P(RNODE_LIT(n)->nd_lit,
T_REGEXP))
break;
22758 match3 = NEW_MATCH3(node2, node1, loc);
22763 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
22764 nd_set_line(n, line);
22768# if WARN_PAST_SCOPE
22772 struct vtable *past = p->lvtbl->past;
22774 if (vtable_included(past,
id))
return 1;
22785 NODE *outer = local->numparam.outer;
22786 NODE *inner = local->numparam.inner;
22787 if (outer || inner) {
22788 NODE *used = outer ? outer : inner;
22789 compile_error(p,
"numbered parameter is already used in\n"
22790 "%s:%d: %s block here",
22791 p->ruby_sourcefile, nd_line(used),
22792 outer ?
"outer" :
"inner");
22793 parser_show_error_line(p, &used->nd_loc);
22806 return NEW_SELF(loc);
22808 return NEW_NIL(loc);
22810 return NEW_TRUE(loc);
22811 case keyword_false:
22812 return NEW_FALSE(loc);
22813 case keyword__FILE__:
22815 VALUE file = p->ruby_sourcefile_string;
22819 file = rb_str_dup(file);
22820 node = NEW_STR(file, loc);
22824 case keyword__LINE__:
22825 return NEW_LIT(
INT2FIX(loc->beg_pos.lineno), loc);
22826 case keyword__ENCODING__:
22827 node = NEW_LIT(rb_enc_from_encoding(p->enc), loc);
22832 switch (id_type(
id)) {
22834 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
22835 if (NUMPARAM_ID_P(
id) && numparam_nested_p(p))
return 0;
22836 if (
id == p->cur_arg) {
22837 compile_error(p,
"circular argument reference - %"PRIsWARN, rb_id2str(
id));
22840 if (vidp) *vidp |= LVAR_USED;
22841 node = NEW_DVAR(
id, loc);
22844 if (local_id_ref(p,
id, &vidp)) {
22845 if (
id == p->cur_arg) {
22846 compile_error(p,
"circular argument reference - %"PRIsWARN, rb_id2str(
id));
22849 if (vidp) *vidp |= LVAR_USED;
22850 node = NEW_LVAR(
id, loc);
22853 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
22854 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
22855 if (numparam_nested_p(p))
return 0;
22856 node = NEW_DVAR(
id, loc);
22858 if (!local->numparam.current) local->numparam.current = node;
22861# if WARN_PAST_SCOPE
22863 rb_warning1(
"possible reference to past scope - %"PRIsWARN, rb_id2str(
id));
22867 if (dyna_in_block(p) &&
id == rb_intern(
"it")
22868 && !(DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev))
22869 && p->max_numparam != ORDINAL_PARAM) {
22870 rb_warn0(
"`it` calls without arguments will refer to the first block param in Ruby 3.4; use it() or self.it");
22872 return NEW_VCALL(
id, loc);
22874 return NEW_GVAR(
id, loc);
22876 return NEW_IVAR(
id, loc);
22878 return NEW_CONST(
id, loc);
22880 return NEW_CVAR(
id, loc);
22882 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
22890 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
22892 while (opts->nd_next) {
22893 opts = opts->nd_next;
22894 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
22896 opts->nd_next = opt;
22906 opt_arg_append(RNODE_OPT_ARG(kwlist), RNODE_OPT_ARG(kw));
22916 if (nd_type_p(n, NODE_BEGIN)) {
22917 n = RNODE_BEGIN(n)->nd_body;
22919 else if (nd_type_p(n, NODE_BLOCK) && RNODE_BLOCK(n)->nd_end == n) {
22920 n = RNODE_BLOCK(n)->nd_head;
22926 return NEW_DEFINED(n, loc);
22933 yyerror1(loc,
"invalid symbol");
22945 enum node_type
type = nd_type(symbol);
22948 nd_set_type(symbol, NODE_DSYM);
22951 nd_set_type(symbol, NODE_LIT);
22952 lit = str_to_sym_check(p, RNODE_LIT(symbol)->nd_lit, &RNODE(symbol)->nd_loc);
22956 compile_error(p,
"unexpected node as symbol: %s", parser_node_name(
type));
22958 return list_append(p, symbols, symbol);
22969 node = NEW_LIT(reg_compile(p, STR_NEW0(), options), loc);
22973 switch (nd_type(node)) {
22976 VALUE src = RNODE_STR(node)->nd_lit;
22977 nd_set_type(node, NODE_LIT);
22978 nd_set_loc(node, loc);
22979 RB_OBJ_WRITTEN(p->ast,
Qnil, RNODE_LIT(node)->nd_lit = reg_compile(p, src, options));
22984 node = NEW_DSTR0(lit, 1, NEW_LIST(node, loc), loc);
22988 nd_set_type(node, NODE_DREGX);
22989 nd_set_loc(node, loc);
22990 RNODE_DREGX(node)->nd_cflag = options & RE_OPTION_MASK;
22991 if (!
NIL_P(RNODE_DREGX(node)->nd_lit)) reg_fragment_check(p, RNODE_DREGX(node)->nd_lit, options);
22992 for (list = RNODE_DREGX(prev = node)->nd_next; list; list = RNODE_LIST(list->nd_next)) {
22993 NODE *frag = list->nd_head;
22994 enum node_type
type = nd_type(frag);
22995 if (
type == NODE_STR || (
type == NODE_DSTR && !RNODE_DSTR(frag)->nd_next)) {
22996 VALUE tail = RNODE_STR(frag)->nd_lit;
22997 if (reg_fragment_check(p, tail, options) && prev && !
NIL_P(RNODE_DREGX(prev)->nd_lit)) {
22998 VALUE lit = prev == node ? RNODE_DREGX(prev)->nd_lit : RNODE_LIT(RNODE_LIST(prev)->nd_head)->nd_lit;
22999 if (!literal_concat0(p, lit, tail)) {
23000 return NEW_NIL(loc);
23002 rb_str_resize(tail, 0);
23003 RNODE_LIST(prev)->nd_next = list->nd_next;
23004 rb_discard_node(p, list->nd_head);
23005 rb_discard_node(p, (
NODE *)list);
23006 list = RNODE_LIST(prev);
23009 prev = (
NODE *)list;
23016 if (!RNODE_DREGX(node)->nd_next) {
23017 VALUE src = RNODE_DREGX(node)->nd_lit;
23018 VALUE re = reg_compile(p, src, options);
23021 if (options & RE_OPTION_ONCE) {
23022 node = NEW_ONCE(node, loc);
23033 return NEW_KW_ARG((k), loc);
23040 VALUE lit = STR_NEW0();
23041 NODE *xstr = NEW_XSTR(lit, loc);
23045 switch (nd_type(node)) {
23047 nd_set_type(node, NODE_XSTR);
23048 nd_set_loc(node, loc);
23051 nd_set_type(node, NODE_DXSTR);
23052 nd_set_loc(node, loc);
23055 node = NEW_DXSTR(
Qnil, 1, NEW_LIST(node, loc), loc);
23066 if (!arg || !p->case_labels)
return;
23068 lit = rb_node_case_when_optimizable_literal(arg);
23069 if (UNDEF_P(lit))
return;
23070 if (nd_type_p(arg, NODE_STR)) {
23074 if (
NIL_P(p->case_labels)) {
23075 p->case_labels = rb_obj_hide(rb_hash_new());
23078 VALUE line = rb_hash_lookup(p->case_labels, lit);
23079 if (!
NIL_P(line)) {
23080 rb_warning1(
"duplicated `when' clause with line %d is ignored",
23085 rb_hash_aset(p->case_labels, lit,
INT2NUM(p->ruby_sourceline));
23092 if (is_notop_id(
id)) {
23093 switch (
id & ID_SCOPE_MASK) {
23094 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
23097 if (dyna_in_block(p)) {
23098 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
23100 if (local_id(p,
id))
return 1;
23105 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
23112 VALUE src = 0, err = 0;
23114 if (ripper_is_node_yylval(p, re)) {
23115 src = RNODE_RIPPER(re)->nd_cval;
23116 re = RNODE_RIPPER(re)->nd_rval;
23118 if (ripper_is_node_yylval(p, opt)) {
23119 options = (int)RNODE_RIPPER(opt)->nd_vid;
23120 opt = RNODE_RIPPER(opt)->nd_rval;
23122 if (src &&
NIL_P(parser_reg_compile(p, src, options, &err))) {
23123 compile_error(p,
"%"PRIsVALUE, err);
23125 return dispatch2(regexp_literal, re, opt);
23129static inline enum lex_state_e
23130parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
23133 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
23135 return p->lex.state = ls;
23139static const char rb_parser_lex_state_names[][8] = {
23140 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
23141 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
23142 "LABEL",
"LABELED",
"FITEM",
23149 unsigned int mask = 1;
23150 static const char none[] =
"NONE";
23152 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
23153 if ((
unsigned)state & mask) {
23155 rb_str_cat(buf,
"|", 1);
23162 rb_str_cat(buf, none,
sizeof(none)-1);
23170 VALUE mesg = p->debug_buffer;
23172 if (!
NIL_P(mesg) && RSTRING_LEN(mesg)) {
23173 p->debug_buffer =
Qnil;
23174 rb_io_puts(1, &mesg, out);
23176 if (!
NIL_P(str) && RSTRING_LEN(str)) {
23177 rb_io_write(p->debug_output, str);
23182rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
23183 enum lex_state_e to,
int line)
23187 append_lex_state_name(p, from, mesg);
23189 append_lex_state_name(p, to, mesg);
23190 rb_str_catf(mesg,
" at line %d\n", line);
23191 flush_debug_buffer(p, p->debug_output, mesg);
23196rb_parser_lex_state_name(
struct parser_params *p,
enum lex_state_e state)
23198 return rb_fstring(append_lex_state_name(p, state,
rb_str_new(0, 0)));
23208 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
23209 for (; mask && !(stack & mask); mask >>= 1)
continue;
23210 for (; mask; mask >>= 1) rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
23215rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
23216 const char *name,
int line)
23218 VALUE mesg = rb_sprintf(
"%s: ", name);
23219 append_bitstack_value(p, stack, mesg);
23220 rb_str_catf(mesg,
" at line %d\n", line);
23221 flush_debug_buffer(p, p->debug_output, mesg);
23225rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
23231 rb_str_vcatf(mesg, fmt, ap);
23233 yyerror0(RSTRING_PTR(mesg));
23237 append_lex_state_name(p, p->lex.state, mesg);
23238 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
23239 rb_str_resize(mesg, 0);
23240 append_bitstack_value(p, p->cond_stack, mesg);
23241 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
23242 rb_str_resize(mesg, 0);
23243 append_bitstack_value(p, p->cmdarg_stack, mesg);
23244 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
23245 if (p->debug_output == rb_ractor_stdout())
23246 p->debug_output = rb_ractor_stderr();
23251rb_parser_set_pos(
YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
23253 yylloc->beg_pos.lineno = sourceline;
23254 yylloc->beg_pos.column = beg_pos;
23255 yylloc->end_pos.lineno = sourceline;
23256 yylloc->end_pos.column = end_pos;
23263 int sourceline = here->sourceline;
23264 int beg_pos = (int)here->offset - here->quote
23265 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
23266 int end_pos = (int)here->offset + here->length + here->quote;
23268 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
23274 yylloc->beg_pos.lineno = p->delayed.beg_line;
23275 yylloc->beg_pos.column = p->delayed.beg_col;
23276 yylloc->end_pos.lineno = p->delayed.end_line;
23277 yylloc->end_pos.column = p->delayed.end_col;
23285 int sourceline = p->ruby_sourceline;
23286 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
23287 int end_pos = (int)(p->lex.pend - p->lex.pbeg);
23288 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
23294 yylloc->end_pos = yylloc->beg_pos;
23302 int sourceline = p->ruby_sourceline;
23303 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
23304 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
23305 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
23311 int sourceline = p->ruby_sourceline;
23312 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
23313 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
23314 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
23321 if (!
id)
return -1;
23324 *err =
"Can't change the value of self";
23327 *err =
"Can't assign to nil";
23330 *err =
"Can't assign to true";
23332 case keyword_false:
23333 *err =
"Can't assign to false";
23335 case keyword__FILE__:
23336 *err =
"Can't assign to __FILE__";
23338 case keyword__LINE__:
23339 *err =
"Can't assign to __LINE__";
23341 case keyword__ENCODING__:
23342 *err =
"Can't assign to __ENCODING__";
23345 switch (id_type(
id)) {
23347 if (dyna_in_block(p)) {
23348 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
23349 compile_error(p,
"Can't assign to numbered parameter _%d",
23350 NUMPARAM_ID_TO_IDX(
id));
23353 if (dvar_curr(p,
id))
return NODE_DASGN;
23354 if (dvar_defined(p,
id))
return NODE_DASGN;
23355 if (local_id(p,
id))
return NODE_LASGN;
23360 if (!local_id(p,
id)) local_var(p,
id);
23364 case ID_GLOBAL:
return NODE_GASGN;
23365 case ID_INSTANCE:
return NODE_IASGN;
23367 if (!p->ctxt.in_def)
return NODE_CDECL;
23368 *err =
"dynamic constant assignment";
23370 case ID_CLASS:
return NODE_CVASGN;
23372 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set", rb_id2str(
id));
23381 const char *err = 0;
23382 int node_type = assignable0(p,
id, &err);
23383 switch (node_type) {
23384 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
23385 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
23386 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
23387 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
23388 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, loc);
23389 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
23391 if (err) yyerror1(loc, err);
23392 return NEW_ERROR(loc);
23398 const char *err = 0;
23399 assignable0(p, get_id(lhs), &err);
23400 if (err) lhs = assign_error(p, err, lhs);
23409 if (name == idUScore)
return 1;
23410 if (!is_local_id(name))
return 0;
23411 s = rb_id2str(name);
23413 return RSTRING_PTR(s)[0] ==
'_';
23419 if (dyna_in_block(p)) {
23420 if (dvar_curr(p, name)) {
23421 if (is_private_local_id(p, name))
return 1;
23422 yyerror0(
"duplicated argument name");
23424 else if (dvar_defined(p, name) || local_id(p, name)) {
23425 vtable_add(p->lvtbl->vars, name);
23426 if (p->lvtbl->used) {
23427 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
23433 if (local_id(p, name)) {
23434 if (is_private_local_id(p, name))
return 1;
23435 yyerror0(
"duplicated argument name");
23444 shadowing_lvar_0(p, name);
23452 if (!is_local_id(name)) {
23453 compile_error(p,
"invalid local variable - %"PRIsVALUE,
23457 if (!shadowing_lvar_0(p, name))
return;
23465 return NEW_ATTRASGN(recv, tASET, idx, loc);
23471 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
23472 compile_error(p,
"both block arg and actual block given");
23479 if (!CALL_Q_P(atype))
id = rb_id_attrset(
id);
23480 return NEW_ATTRASGN(recv,
id, 0, loc);
23486 switch (nd_type(node)) {
23488 compile_error(p,
"Can't set variable $%ld", RNODE_NTH_REF(node)->nd_nth);
23490 case NODE_BACK_REF:
23491 compile_error(p,
"Can't set variable $%c", (
int)RNODE_BACK_REF(node)->nd_nth);
23501 return dispatch2(assign_error, mesg, expr);
23509 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
23510 switch (nd_type(node1)) {
23512 return list_append(p, node1, node2);
23513 case NODE_BLOCK_PASS:
23514 RNODE_BLOCK_PASS(node1)->nd_head = arg_append(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
23515 node1->nd_loc.end_pos = RNODE_BLOCK_PASS(node1)->nd_head->nd_loc.end_pos;
23517 case NODE_ARGSPUSH:
23518 RNODE_ARGSPUSH(node1)->nd_body = list_append(p, NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, &RNODE_ARGSPUSH(node1)->nd_body->nd_loc), node2);
23519 node1->nd_loc.end_pos = RNODE_ARGSPUSH(node1)->nd_body->nd_loc.end_pos;
23520 nd_set_type(node1, NODE_ARGSCAT);
23523 if (!nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
23524 RNODE_ARGSCAT(node1)->nd_body = list_append(p, RNODE_ARGSCAT(node1)->nd_body, node2);
23525 node1->nd_loc.end_pos = RNODE_ARGSCAT(node1)->nd_body->nd_loc.end_pos;
23528 return NEW_ARGSPUSH(node1, node2, loc);
23534 if (!node2)
return node1;
23535 switch (nd_type(node1)) {
23536 case NODE_BLOCK_PASS:
23537 if (RNODE_BLOCK_PASS(node1)->nd_head)
23538 RNODE_BLOCK_PASS(node1)->nd_head = arg_concat(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
23540 RNODE_LIST(node1)->nd_head = NEW_LIST(node2, loc);
23542 case NODE_ARGSPUSH:
23543 if (!nd_type_p(node2, NODE_LIST))
break;
23544 RNODE_ARGSPUSH(node1)->nd_body = list_concat(NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, loc), node2);
23545 nd_set_type(node1, NODE_ARGSCAT);
23548 if (!nd_type_p(node2, NODE_LIST) ||
23549 !nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
23550 RNODE_ARGSCAT(node1)->nd_body = list_concat(RNODE_ARGSCAT(node1)->nd_body, node2);
23553 return NEW_ARGSCAT(node1, node2, loc);
23560 if ((n1 = splat_array(args)) != 0) {
23561 return list_append(p, n1, last_arg);
23563 return arg_append(p, args, last_arg, loc);
23570 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
23571 return list_concat(n1, rest_arg);
23573 return arg_concat(p, args, rest_arg, loc);
23577splat_array(
NODE* node)
23579 if (nd_type_p(node, NODE_SPLAT)) node = RNODE_SPLAT(node)->nd_head;
23580 if (nd_type_p(node, NODE_LIST))
return node;
23589 switch (nd_type(rhs)) {
23591 if (local_id_ref(p, RNODE_LASGN(rhs)->nd_vid, &vidp)) {
23592 if (vidp) *vidp |= LVAR_USED;
23596 if (dvar_defined_ref(p, RNODE_DASGN(rhs)->nd_vid, &vidp)) {
23597 if (vidp) *vidp |= LVAR_USED;
23602 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
23603 mark_lvar_used(p, rhs->nd_head);
23614 if (!nd_type_p(n, NODE_CALL)) {
23615 const YYLTYPE *loc = &n->nd_loc;
23617 if (RNODE_CDECL(n)->nd_vid) {
23618 path = rb_id2str(RNODE_CDECL(n)->nd_vid);
23621 n = RNODE_CDECL(n)->nd_else;
23622 path = rb_ary_new();
23623 for (; n && nd_type_p(n, NODE_COLON2); n = RNODE_COLON2(n)->nd_head) {
23624 rb_ary_push(path, rb_id2str(RNODE_COLON2(n)->nd_mid));
23626 if (n && nd_type_p(n, NODE_CONST)) {
23628 rb_ary_push(path, rb_id2str(RNODE_CONST(n)->nd_vid));
23630 else if (n && nd_type_p(n, NODE_COLON3)) {
23639 path = rb_fstring(path);
23641 n = NEW_LIT(path, loc);
23650 NODE *fcore = NEW_LIT(rb_mRubyVMFrozenCore, loc);
23653 return NEW_CALL(fcore, rb_intern(
"make_shareable_copy"),
23654 NEW_LIST(value, loc), loc);
23657 return NEW_CALL(fcore, rb_intern(
"make_shareable"),
23658 NEW_LIST(value, loc), loc);
23665 NODE *fcore = NEW_LIT(rb_mRubyVMFrozenCore, loc);
23666 NODE *args = NEW_LIST(value, loc);
23667 args = list_append(p, args, const_decl_path(p, *dest));
23668 return NEW_CALL(fcore, rb_intern(
"ensure_shareable"), args, loc);
23671static int is_static_content(
NODE *node);
23676 if (!node)
return Qnil;
23677 enum node_type
type = nd_type(node);
23686 return RNODE_LIT(node)->nd_lit;
23692#ifndef SHAREABLE_BARE_EXPRESSION
23693#define SHAREABLE_BARE_EXPRESSION 1
23697shareable_literal_constant(
struct parser_params *p,
enum shareability shareable,
23700# define shareable_literal_constant_next(n) \
23701 shareable_literal_constant(p, shareable, dest, (n), &(n)->nd_loc, level+1)
23704 if (!value)
return 0;
23705 enum node_type
type = nd_type(value);
23714 if (shareable == shareable_literal) {
23715 value = NEW_CALL(value, idUMinus, 0, loc);
23720 lit = rb_fstring(RNODE_STR(value)->nd_lit);
23721 nd_set_type(value, NODE_LIT);
23726 lit = rb_ary_new();
23728 NODE *n = NEW_LIT(lit, loc);
23733 lit = rb_ary_new();
23734 for (
NODE *n = value; n; n = RNODE_LIST(n)->nd_next) {
23735 NODE *elt = RNODE_LIST(n)->nd_head;
23737 elt = shareable_literal_constant_next(elt);
23739 RNODE_LIST(n)->nd_head = elt;
23741 else if (
RTEST(lit)) {
23747 VALUE e = shareable_literal_value(p, elt);
23749 rb_ary_push(lit, e);
23760 if (!RNODE_HASH(value)->nd_brace)
return 0;
23761 lit = rb_hash_new();
23762 for (
NODE *n = RNODE_HASH(value)->nd_head; n; n = RNODE_LIST(RNODE_LIST(n)->nd_next)->nd_next) {
23763 NODE *key = RNODE_LIST(n)->nd_head;
23764 NODE *val = RNODE_LIST(RNODE_LIST(n)->nd_next)->nd_head;
23766 key = shareable_literal_constant_next(key);
23768 RNODE_LIST(n)->nd_head = key;
23770 else if (
RTEST(lit)) {
23771 rb_hash_clear(lit);
23776 val = shareable_literal_constant_next(val);
23778 RNODE_LIST(RNODE_LIST(n)->nd_next)->nd_head = val;
23780 else if (
RTEST(lit)) {
23781 rb_hash_clear(lit);
23786 VALUE k = shareable_literal_value(p, key);
23787 VALUE v = shareable_literal_value(p, val);
23788 if (!UNDEF_P(k) && !UNDEF_P(v)) {
23789 rb_hash_aset(lit, k, v);
23792 rb_hash_clear(lit);
23800 if (shareable == shareable_literal &&
23801 (SHAREABLE_BARE_EXPRESSION || level > 0)) {
23802 return ensure_shareable_node(p, dest, value, loc);
23808 if (!lit)
return 0;
23812 value = make_shareable_node(p, value,
false, loc);
23815 value = NEW_LIT(rb_ractor_make_shareable(lit), loc);
23820# undef shareable_literal_constant_next
23824shareable_constant_value(
struct parser_params *p,
enum shareability shareable,
23827 if (!value)
return 0;
23828 switch (shareable) {
23829 case shareable_none:
23832 case shareable_literal:
23834 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
23835 if (lit)
return lit;
23840 case shareable_copy:
23841 case shareable_everything:
23843 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
23844 if (lit)
return lit;
23845 return make_shareable_node(p, value, shareable == shareable_copy, loc);
23857 if (!lhs)
return 0;
23859 switch (nd_type(lhs)) {
23861 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
23870 set_nd_value(p, lhs, rhs);
23871 nd_set_loc(lhs, loc);
23874 case NODE_ATTRASGN:
23875 RNODE_ATTRASGN(lhs)->nd_args = arg_append(p, RNODE_ATTRASGN(lhs)->nd_args, rhs, loc);
23876 nd_set_loc(lhs, loc);
23890 NODE *void_node = 0, *vn;
23893 rb_warning0(
"empty expression");
23896 switch (nd_type(node)) {
23902 return void_node ? void_node : node;
23905 if (!RNODE_CASE3(node)->nd_body || !nd_type_p(RNODE_CASE3(node)->nd_body, NODE_IN)) {
23906 compile_error(p,
"unexpected node");
23909 if (RNODE_IN(RNODE_CASE3(node)->nd_body)->nd_body) {
23913 return void_node ? void_node : node;
23916 while (RNODE_BLOCK(node)->nd_next) {
23917 node = RNODE_BLOCK(node)->nd_next;
23919 node = RNODE_BLOCK(node)->nd_head;
23923 node = RNODE_BEGIN(node)->nd_body;
23928 if (!RNODE_IF(node)->nd_body) {
23931 else if (!RNODE_IF(node)->nd_else) {
23934 vn = value_expr_check(p, RNODE_IF(node)->nd_body);
23935 if (!vn)
return NULL;
23936 if (!void_node) void_node = vn;
23937 node = RNODE_IF(node)->nd_else;
23942 node = RNODE_AND(node)->nd_1st;
23948 mark_lvar_used(p, node);
23962 NODE *void_node = value_expr_check(p, node);
23964 yyerror1(&void_node->nd_loc,
"void value expression");
23974 const char *useless = 0;
23978 if (!node || !(node = nd_once_body(node)))
return;
23979 switch (nd_type(node)) {
23981 switch (RNODE_OPCALL(node)->nd_mid) {
24000 useless = rb_id2name(RNODE_OPCALL(node)->nd_mid);
24011 case NODE_BACK_REF:
24012 useless =
"a variable";
24015 useless =
"a constant";
24021 useless =
"a literal";
24046 useless =
"defined?";
24051 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
24058 NODE *
const n = node;
24060 if (!node)
return n;
24061 if (!nd_type_p(node, NODE_BLOCK))
return n;
24063 while (RNODE_BLOCK(node)->nd_next) {
24064 void_expr(p, RNODE_BLOCK(node)->nd_head);
24065 node = RNODE_BLOCK(node)->nd_next;
24071remove_begin(
NODE *node)
24073 NODE **n = &node, *n1 = node;
24074 while (n1 && nd_type_p(n1, NODE_BEGIN) && RNODE_BEGIN(n1)->nd_body) {
24075 *n = n1 = RNODE_BEGIN(n1)->nd_body;
24083 NODE *node = *body;
24086 *body = NEW_NIL(&NULL_LOC);
24089#define subnodes(type, n1, n2) \
24090 ((!type(node)->n1) ? (type(node)->n2 ? (body = &type(node)->n2, 1) : 0) : \
24091 (!type(node)->n2) ? (body = &type(node)->n1, 1) : \
24092 (reduce_nodes(p, &type(node)->n1), body = &type(node)->n2, 1))
24095 int newline = (int)(nd_fl_newline(node));
24096 switch (nd_type(node)) {
24102 *body = node = RNODE_RETURN(node)->nd_stts;
24103 if (newline && node) nd_set_fl_newline(node);
24106 *body = node = RNODE_BEGIN(node)->nd_body;
24107 if (newline && node) nd_set_fl_newline(node);
24110 body = &RNODE_BLOCK(RNODE_BLOCK(node)->nd_end)->nd_head;
24114 if (subnodes(RNODE_IF, nd_body, nd_else))
break;
24117 body = &RNODE_CASE(node)->nd_body;
24120 if (!subnodes(RNODE_WHEN, nd_body, nd_next))
goto end;
24123 if (!subnodes(RNODE_ENSURE, nd_head, nd_resq))
goto end;
24127 if (RNODE_RESCUE(node)->nd_else) {
24128 body = &RNODE_RESCUE(node)->nd_resq;
24131 if (!subnodes(RNODE_RESCUE, nd_head, nd_resq))
goto end;
24137 if (newline && node) nd_set_fl_newline(node);
24144is_static_content(
NODE *node)
24146 if (!node)
return 1;
24147 switch (nd_type(node)) {
24149 if (!(node = RNODE_HASH(node)->nd_head))
break;
24152 if (!is_static_content(RNODE_LIST(node)->nd_head))
return 0;
24153 }
while ((node = RNODE_LIST(node)->nd_next) != 0);
24170 switch (nd_type(node)) {
24184 if (!get_nd_value(p, node))
return 1;
24185 if (is_static_content(get_nd_value(p, node))) {
24187 parser_warn(p, get_nd_value(p, node),
"found `= literal' in conditional, should be ==");
24198#define SWITCH_BY_COND_TYPE(t, w, arg) do { \
24200 case COND_IN_OP: break; \
24201 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
24202 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
24211 enum node_type
type;
24213 if (node == 0)
return 0;
24215 type = nd_type(node);
24217 if (
type == NODE_LIT &&
FIXNUM_P(RNODE_LIT(node)->nd_lit)) {
24218 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
24219 ID lineno = rb_intern(
"$.");
24220 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
24222 return cond0(p, node, COND_IN_FF, loc,
true);
24228 if (node == 0)
return 0;
24229 if (!(node = nd_once_body(node)))
return 0;
24230 assign_in_cond(p, node);
24232 switch (nd_type(node)) {
24234 RNODE_BEGIN(node)->nd_body = cond0(p, RNODE_BEGIN(node)->nd_body,
type, loc, top);
24240 SWITCH_BY_COND_TYPE(
type, warn,
"string ");
24244 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning,
"regex ");
24246 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
24250 NODE *end = RNODE_BLOCK(node)->nd_end;
24251 NODE **expr = &RNODE_BLOCK(end)->nd_head;
24252 if (top) top = node == end;
24253 *expr = cond0(p, *expr,
type, loc, top);
24259 RNODE_AND(node)->nd_1st = cond0(p, RNODE_AND(node)->nd_1st, COND_IN_COND, loc,
true);
24260 RNODE_AND(node)->nd_2nd = cond0(p, RNODE_AND(node)->nd_2nd, COND_IN_COND, loc,
true);
24266 RNODE_DOT2(node)->nd_beg = range_op(p, RNODE_DOT2(node)->nd_beg, loc);
24267 RNODE_DOT2(node)->nd_end = range_op(p, RNODE_DOT2(node)->nd_end, loc);
24268 if (nd_type_p(node, NODE_DOT2)) nd_set_type(node,NODE_FLIP2);
24269 else if (nd_type_p(node, NODE_DOT3)) nd_set_type(node, NODE_FLIP3);
24274 SWITCH_BY_COND_TYPE(
type, warning,
"symbol ");
24278 if (RB_TYPE_P(RNODE_LIT(node)->nd_lit,
T_REGEXP)) {
24279 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ");
24280 nd_set_type(node, NODE_MATCH);
24282 else if (RNODE_LIT(node)->nd_lit ==
Qtrue ||
24283 RNODE_LIT(node)->nd_lit ==
Qfalse) {
24286 else if (
SYMBOL_P(RNODE_LIT(node)->nd_lit)) {
24290 SWITCH_BY_COND_TYPE(
type, warning,
"");
24301 if (node == 0)
return 0;
24302 return cond0(p, node, COND_IN_COND, loc,
true);
24308 if (node == 0)
return 0;
24309 return cond0(p, node, COND_IN_OP, loc,
true);
24316 return NEW_NIL(&loc);
24322 if (!cc)
return right;
24323 cc = cond0(p, cc, COND_IN_COND, loc,
true);
24324 return newline_node(NEW_IF(cc, left, right, loc));
24330 if (!cc)
return right;
24331 cc = cond0(p, cc, COND_IN_COND, loc,
true);
24332 return newline_node(NEW_UNLESS(cc, left, right, loc));
24335#define NEW_AND_OR(type, f, s, loc) (type == NODE_AND ? NEW_AND(f,s,loc) : NEW_OR(f,s,loc))
24341 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
24344 if (left && nd_type_p(left,
type)) {
24345 NODE *node = left, *second;
24346 while ((second = RNODE_AND(node)->nd_2nd) != 0 && nd_type_p(second,
type)) {
24349 RNODE_AND(node)->nd_2nd = NEW_AND_OR(
type, second, right, loc);
24350 nd_set_line(RNODE_AND(node)->nd_2nd, op_loc->beg_pos.lineno);
24351 left->nd_loc.end_pos = loc->end_pos;
24354 op = NEW_AND_OR(
type, left, right, loc);
24355 nd_set_line(op, op_loc->beg_pos.lineno);
24364 if (nd_type_p(node, NODE_BLOCK_PASS)) {
24365 compile_error(p,
"block argument should not be given");
24373 no_blockarg(p, node);
24374 if (nd_type_p(node, NODE_LIST) && !RNODE_LIST(node)->nd_next) {
24375 node = RNODE_LIST(node)->nd_head;
24384 if (node) no_blockarg(p, node);
24386 return NEW_YIELD(node, loc);
24405 bignum_negate(lit);
24406 lit = rb_big_norm(lit);
24409 rational_set_num(lit, negate_lit(p, rational_get_num(lit)));
24412 rcomplex_set_real(lit, negate_lit(p, rcomplex_get_real(lit)));
24413 rcomplex_set_imag(lit, negate_lit(p, rcomplex_get_imag(lit)));
24420 rb_parser_fatal(p,
"unknown literal type (%s) passed to negate_lit",
24421 rb_builtin_class_name(lit));
24431 if (!node1)
return (
NODE *)node2;
24432 node2->nd_head = node1;
24433 nd_set_first_lineno(node2, nd_first_lineno(node1));
24434 nd_set_first_column(node2, nd_first_column(node1));
24435 return (
NODE *)node2;
24443 if (args->pre_args_num)
return false;
24444 if (args->post_args_num)
return false;
24445 if (args->rest_arg)
return false;
24446 if (args->opt_args)
return false;
24447 if (args->block_arg)
return false;
24448 if (args->kw_args)
return false;
24449 if (args->kw_rest_arg)
return false;
24458 if (args->forwarding) {
24460 yyerror1(&RNODE(tail)->nd_loc,
"... after rest argument");
24463 rest_arg = idFWD_REST;
24466 args->pre_args_num = pre_args ?
rb_long2int(pre_args->nd_plen) : 0;
24467 args->pre_init = pre_args ? pre_args->nd_next : 0;
24469 args->post_args_num = post_args ?
rb_long2int(post_args->nd_plen) : 0;
24470 args->post_init = post_args ? post_args->nd_next : 0;
24471 args->first_post_arg = post_args ? post_args->nd_pid : 0;
24473 args->rest_arg = rest_arg;
24475 args->opt_args = opt_args;
24477#ifdef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
24478 args->ruby2_keywords = args->forwarding;
24480 args->ruby2_keywords = 0;
24483 nd_set_loc(RNODE(tail), loc);
24493 if (p->error_p)
return node;
24495 args->block_arg = block;
24496 args->kw_args = kw_args;
24505 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
24506 struct vtable *vtargs = p->lvtbl->args;
24509 if (block) block = vtargs->tbl[vtargs->pos-1];
24510 vtable_pop(vtargs, !!block + !!kw_rest_arg);
24511 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
24513 if (!NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body)))
24515 --required_kw_vars;
24516 kwn = kwn->nd_next;
24519 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
24520 ID vid = get_nd_vid(p, kwn->nd_body);
24521 if (NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body))) {
24522 *required_kw_vars++ = vid;
24529 arg_var(p, kw_bits);
24530 if (kw_rest_arg) arg_var(p, kw_rest_arg);
24531 if (block) arg_var(p, block);
24533 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
24535 else if (kw_rest_arg == idNil) {
24536 args->no_kwarg = 1;
24538 else if (kw_rest_arg) {
24539 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
24548 if (max_numparam > NO_PARAM) {
24550 YYLTYPE loc = RUBY_INIT_YYLLOC();
24551 args = new_args_tail(p, 0, 0, 0, 0);
24552 nd_set_loc(RNODE(args), &loc);
24554 args->nd_ainfo.pre_args_num = max_numparam;
24562 RNODE_ARYPTN(aryptn)->nd_pconst = constant;
24565 NODE *pre_args = NEW_LIST(pre_arg, loc);
24566 if (RNODE_ARYPTN(aryptn)->pre_args) {
24567 RNODE_ARYPTN(aryptn)->pre_args = list_concat(pre_args, RNODE_ARYPTN(aryptn)->pre_args);
24570 RNODE_ARYPTN(aryptn)->pre_args = pre_args;
24580 rest_arg = rest_arg ? rest_arg : NODE_SPECIAL_NO_NAME_REST;
24585 NODE *node = NEW_ARYPTN(pre_args, rest_arg, post_args, loc);
24593 RNODE_FNDPTN(fndptn)->nd_pconst = constant;
24601 pre_rest_arg = pre_rest_arg ? pre_rest_arg : NODE_SPECIAL_NO_NAME_REST;
24602 post_rest_arg = post_rest_arg ? post_rest_arg : NODE_SPECIAL_NO_NAME_REST;
24603 NODE *node = NEW_FNDPTN(pre_rest_arg, args, post_rest_arg, loc);
24611 RNODE_HSHPTN(hshptn)->nd_pconst = constant;
24618 NODE *node, *kw_rest_arg_node;
24620 if (kw_rest_arg == idNil) {
24621 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
24623 else if (kw_rest_arg) {
24624 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
24627 kw_rest_arg_node = NULL;
24630 node = NEW_HSHPTN(0, kw_args, kw_rest_arg_node, loc);
24641 return NEW_LIT(
ID2SYM(idNULL), loc);
24644 switch (nd_type(node)) {
24646 nd_set_type(node, NODE_DSYM);
24647 nd_set_loc(node, loc);
24650 lit = str_to_sym_check(p, RNODE_STR(node)->nd_lit, &RNODE(node)->nd_loc);
24652 nd_set_type(node, NODE_LIT);
24653 nd_set_loc(node, loc);
24656 node = NEW_DSYM(
Qnil, 1, NEW_LIST(node, loc), loc);
24663append_literal_keys(st_data_t k, st_data_t v, st_data_t h)
24667 RNODE_LIST(node)->as.nd_alen = 2;
24668 RNODE_LIST(RNODE_LIST(node)->nd_next)->as.nd_end = RNODE_LIST(node)->nd_next;
24669 RNODE_LIST(RNODE_LIST(node)->nd_next)->nd_next = 0;
24671 list_concat(*result, node);
24674 return ST_CONTINUE;
24685 st_table *literal_keys = st_init_table_with_size(&literal_type, RNODE_LIST(hash)->as.nd_alen / 2);
24687 NODE *last_expr = 0;
24689 while (hash && RNODE_LIST(hash)->nd_next) {
24690 NODE *head = RNODE_LIST(hash)->nd_head;
24691 NODE *value = RNODE_LIST(hash)->nd_next;
24692 NODE *next = RNODE_LIST(value)->nd_next;
24693 st_data_t key = (st_data_t)head;
24695 RNODE_LIST(value)->nd_next = 0;
24697 key = (st_data_t)value;
24699 else if (nd_type_p(head, NODE_LIT) &&
24700 st_delete(literal_keys, (key = (st_data_t)RNODE_LIT(head)->nd_lit, &key), &data)) {
24701 NODE *dup_value = (RNODE_LIST((
NODE *)data))->nd_next;
24702 rb_compile_warn(p->ruby_sourcefile, nd_line((
NODE *)data),
24703 "key %+"PRIsVALUE
" is duplicated and overwritten on line %d",
24704 RNODE_LIT(head)->nd_lit, nd_line(head));
24705 if (dup_value == last_expr) {
24706 RNODE_LIST(value)->nd_head = block_append(p, RNODE_LIST(dup_value)->nd_head, RNODE_LIST(value)->nd_head);
24709 RNODE_LIST(last_expr)->nd_head = block_append(p, RNODE_LIST(dup_value)->nd_head, RNODE_LIST(last_expr)->nd_head);
24712 st_insert(literal_keys, (st_data_t)key, (st_data_t)hash);
24713 last_expr = !head || nd_type_p(head, NODE_LIT) ? value : head;
24716 st_foreach(literal_keys, append_literal_keys, (st_data_t)&result);
24717 st_free_table(literal_keys);
24719 if (!result) result = hash;
24720 else list_concat(result, hash);
24722 result->nd_loc = loc;
24729 if (hash) hash = remove_duplicate_keys(p, hash);
24730 return NEW_HASH(hash, loc);
24737 if (is_private_local_id(p,
id)) {
24740 if (st_is_member(p->pvtbl,
id)) {
24741 yyerror1(loc,
"duplicated variable name");
24744 st_insert(p->pvtbl, (st_data_t)
id, 0);
24752 p->pktbl = st_init_numtable();
24754 else if (st_is_member(p->pktbl, key)) {
24755 yyerror1(loc,
"duplicated key name");
24758 st_insert(p->pktbl, (st_data_t)key, 0);
24765 return NEW_HASH(hash, loc);
24776 ID vid = get_nd_vid(p, lhs);
24777 YYLTYPE lhs_loc = lhs->nd_loc;
24778 int shareable = ctxt.shareable_constant_value;
24780 switch (nd_type(lhs)) {
24791 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
24792 set_nd_value(p, lhs, rhs);
24793 nd_set_loc(lhs, loc);
24794 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
24796 else if (op == tANDOP) {
24798 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
24800 set_nd_value(p, lhs, rhs);
24801 nd_set_loc(lhs, loc);
24802 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
24806 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
24808 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
24810 set_nd_value(p, asgn, rhs);
24811 nd_set_loc(asgn, loc);
24815 asgn = NEW_ERROR(loc);
24826 args = make_list(args, args_loc);
24827 asgn = NEW_OP_ASGN1(ary, op, args, rhs, loc);
24838 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc);
24849 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
24850 asgn = NEW_OP_CDECL(lhs, op, rhs, loc);
24853 asgn = NEW_ERROR(loc);
24862 if (p->ctxt.in_def) {
24863 yyerror1(loc,
"dynamic constant assignment");
24865 return NEW_CDECL(0, 0, (path), loc);
24871 if (p->ctxt.in_def) {
24872 path = assign_error(p,
"dynamic constant assignment", path);
24880 a = dispatch2(assign_error, ERR_MESG(), a);
24888 return ripper_new_yylval(p, get_id(a), dispatch1(var_field, a), 0);
24896 NODE *result = head;
24898 NODE *tmp = rescue_else ? rescue_else : rescue;
24899 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
24901 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
24902 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
24904 else if (rescue_else) {
24905 result = block_append(p, result, rescue_else);
24908 result = NEW_ENSURE(result, ensure, loc);
24910 fixpos(result, head);
24920 if (!local->used)
return;
24921 cnt = local->used->pos;
24922 if (cnt != local->vars->pos) {
24923 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
24926 ID *v = local->vars->tbl;
24927 ID *u = local->used->tbl;
24928 for (
int i = 0; i < cnt; ++i) {
24929 if (!v[i] || (u[i] & LVAR_USED))
continue;
24930 if (is_private_local_id(p, v[i]))
continue;
24931 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN, rb_id2str(v[i]));
24940 int inherits_dvars = toplevel_scope && compile_for_eval;
24944 local->prev = p->lvtbl;
24945 local->args = vtable_alloc(0);
24946 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
24948 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
24949 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
24950 local->numparam.outer = 0;
24951 local->numparam.inner = 0;
24952 local->numparam.current = 0;
24954 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
24956# if WARN_PAST_SCOPE
24967 while (!DVARS_TERMINAL_P(table)) {
24968 struct vtable *cur_table = table;
24969 table = cur_table->prev;
24970 vtable_free(cur_table);
24977 vtable_chain_free(p, local->used);
24979# if WARN_PAST_SCOPE
24980 vtable_chain_free(p, local->past);
24983 vtable_chain_free(p, local->args);
24984 vtable_chain_free(p, local->vars);
24986 ruby_sized_xfree(local,
sizeof(
struct local_vars));
24993 if (p->lvtbl->used) {
24994 warn_unused_var(p, p->lvtbl);
24997 local_free(p, p->lvtbl);
25008 int cnt_args = vtable_size(p->lvtbl->args);
25009 int cnt_vars = vtable_size(p->lvtbl->vars);
25010 int cnt = cnt_args + cnt_vars;
25014 if (cnt <= 0)
return 0;
25015 tbl = rb_ast_new_local_table(p->ast, cnt);
25016 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
25018 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
25019 ID id = p->lvtbl->vars->tbl[i];
25020 if (!vtable_included(p->lvtbl->args,
id)) {
25021 tbl->ids[j++] = id;
25025 tbl = rb_ast_resize_latest_local_table(p->ast, j);
25036 if (!NUMPARAM_ID_P(
id))
return;
25037 compile_error(p,
"_%d is reserved for numbered parameter",
25038 NUMPARAM_ID_TO_IDX(
id));
25044 numparam_name(p,
id);
25045 vtable_add(p->lvtbl->args,
id);
25051 numparam_name(p,
id);
25052 vtable_add(p->lvtbl->vars,
id);
25053 if (p->lvtbl->used) {
25054 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
25061 struct vtable *vars, *args, *used;
25063 vars = p->lvtbl->vars;
25064 args = p->lvtbl->args;
25065 used = p->lvtbl->used;
25067 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
25070 if (used) used = used->prev;
25073 if (vars && vars->prev == DVARS_INHERIT) {
25074 return rb_local_defined(
id, p->parent_iseq);
25076 else if (vtable_included(args,
id)) {
25080 int i = vtable_included(vars,
id);
25081 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
25089 return local_id_ref(p,
id, NULL);
25095 if (local_id(p, idFWD_ALL))
return TRUE;
25096 compile_error(p,
"unexpected ...");
25103 arg_var(p, idFWD_REST);
25104#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
25105 arg_var(p, idFWD_KWREST);
25107 arg_var(p, idFWD_BLOCK);
25108 arg_var(p, idFWD_ALL);
25114 bool conflict =
false;
25116 struct vtable *vars, *args;
25118 vars = p->lvtbl->vars;
25119 args = p->lvtbl->args;
25121 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
25122 conflict |= (vtable_included(args, arg) && !(all && vtable_included(args, all)));
25127 bool found =
false;
25128 if (vars && vars->prev == DVARS_INHERIT && !found) {
25129 found = (rb_local_defined(arg, p->parent_iseq) &&
25130 !(all && rb_local_defined(all, p->parent_iseq)));
25133 found = (vtable_included(args, arg) &&
25134 !(all && vtable_included(args, all)));
25138 compile_error(p,
"no anonymous %s parameter", var);
25140 else if (conflict) {
25141 compile_error(p,
"anonymous %s parameter is also used within block", var);
25149 NODE *rest = NEW_LVAR(idFWD_REST, loc);
25150#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
25151 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
25154 NODE *args = leading ? rest_arg_append(p, leading, rest, argsloc) : NEW_SPLAT(rest, loc);
25155#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
25156 args = arg_append(p, args, new_hash(p, kwrest, loc), loc);
25158 return arg_blk_pass(args, block);
25167 NODE *inner = local->numparam.inner;
25168 if (!local->numparam.outer) {
25169 local->numparam.outer = local->numparam.current;
25171 local->numparam.inner = 0;
25172 local->numparam.current = 0;
25186 local->numparam.inner = prev_inner;
25188 else if (local->numparam.current) {
25190 local->numparam.inner = local->numparam.current;
25192 if (p->max_numparam > NO_PARAM) {
25194 local->numparam.current = local->numparam.outer;
25195 local->numparam.outer = 0;
25199 local->numparam.current = 0;
25204static const struct vtable *
25207 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
25208 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
25209 if (p->lvtbl->used) {
25210 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
25212 return p->lvtbl->args;
25218 struct vtable *tmp = *vtblp;
25219 *vtblp = tmp->prev;
25220# if WARN_PAST_SCOPE
25221 if (p->past_scope_enabled) {
25222 tmp->prev = p->lvtbl->past;
25223 p->lvtbl->past = tmp;
25235 if ((tmp = p->lvtbl->used) != 0) {
25236 warn_unused_var(p, p->lvtbl);
25237 p->lvtbl->used = p->lvtbl->used->prev;
25240 dyna_pop_vtable(p, &p->lvtbl->args);
25241 dyna_pop_vtable(p, &p->lvtbl->vars);
25247 while (p->lvtbl->args != lvargs) {
25249 if (!p->lvtbl->args) {
25251 ruby_sized_xfree(p->lvtbl,
sizeof(*p->lvtbl));
25261 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
25267 struct vtable *vars, *args, *used;
25270 args = p->lvtbl->args;
25271 vars = p->lvtbl->vars;
25272 used = p->lvtbl->used;
25274 while (!DVARS_TERMINAL_P(vars)) {
25275 if (vtable_included(args,
id)) {
25278 if ((i = vtable_included(vars,
id)) != 0) {
25279 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
25284 if (!vidrefp) used = 0;
25285 if (used) used = used->prev;
25288 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
25289 return rb_dvar_defined(
id, p->parent_iseq);
25298 return dvar_defined_ref(p,
id, NULL);
25304 return (vtable_included(p->lvtbl->args,
id) ||
25305 vtable_included(p->lvtbl->vars,
id));
25312 "regexp encoding option '%c' differs from source encoding '%s'",
25313 c, rb_enc_name(rb_enc_get(str)));
25320 int c = RE_OPTION_ENCODING_IDX(options);
25324 rb_char_to_option_kcode(c, &opt, &idx);
25326 !is_ascii_string(str)) {
25331 else if (RE_OPTION_ENCODING_NONE(options)) {
25333 !is_ascii_string(str)) {
25337 rb_enc_associate(str, rb_ascii8bit_encoding());
25339 else if (rb_is_usascii_enc(p->enc)) {
25340 if (!is_ascii_string(str)) {
25342 rb_enc_associate(str, rb_usascii_encoding());
25345 rb_enc_associate(str, rb_ascii8bit_encoding());
25357 int c = rb_reg_fragment_setenc(p, str, options);
25358 if (c) reg_fragment_enc_error(p, str, c);
25365 reg_fragment_setenc(p, str, options);
25366 err = rb_reg_check_preprocess(str);
25368 err = rb_obj_as_string(err);
25369 compile_error(p,
"%"PRIsVALUE, err);
25375#ifndef UNIVERSAL_PARSER
25384reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
25385 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
25390 long len = name_end - name;
25391 const char *s = (
const char *)name;
25393 return rb_reg_named_capture_assign_iter_impl(p, s,
len, enc, &arg->succ_block, arg->loc);
25402 arg.enc = rb_enc_get(regexp);
25403 arg.succ_block = 0;
25405 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
25407 if (!arg.succ_block)
return 0;
25408 return RNODE_BLOCK(arg.succ_block)->nd_next;
25413rb_reg_named_capture_assign_iter_impl(
struct parser_params *p,
const char *s,
long len,
25419 if (!
len)
return ST_CONTINUE;
25420 if (!VALID_SYMNAME_P(s,
len, enc, ID_LOCAL))
25421 return ST_CONTINUE;
25423 var = intern_cstr(s,
len, enc);
25424 if (
len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)
len)) {
25425 if (!lvar_defined(p, var))
return ST_CONTINUE;
25427 node = node_assign(p, assignable(p, var, 0, loc), NEW_LIT(
ID2SYM(var), loc), NO_LEX_CTXT, loc);
25428 succ = *succ_block;
25429 if (!succ) succ = NEW_ERROR(loc);
25430 succ = block_append(p, succ, node);
25431 *succ_block = succ;
25432 return ST_CONTINUE;
25438 reg_fragment_setenc(p, str, options);
25439 return rb_parser_reg_compile(p, str, options);
25445 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
25454 err = rb_errinfo();
25455 re = parser_reg_compile(p, str, options);
25457 VALUE m = rb_attr_get(rb_errinfo(), idMesg);
25458 rb_set_errinfo(err);
25459 compile_error(p,
"%"PRIsVALUE, m);
25468 VALUE err = rb_errinfo();
25470 str = ripper_is_node_yylval(p, str) ? RNODE_RIPPER(str)->nd_cval : str;
25471 int c = rb_reg_fragment_setenc(p, str, options);
25472 if (c) reg_fragment_enc_error(p, str, c);
25473 re = rb_parser_reg_compile(p, str, options);
25475 *errmsg = rb_attr_get(rb_errinfo(), idMesg);
25476 rb_set_errinfo(err);
25484rb_ruby_parser_set_options(
struct parser_params *p,
int print,
int loop,
int chomp,
int split)
25486 p->do_print = print;
25488 p->do_chomp = chomp;
25489 p->do_split = split;
25495 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
25496 const YYLTYPE *
const LOC = &default_location;
25499 NODE *print = (
NODE *)NEW_FCALL(rb_intern(
"print"),
25500 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
25502 node = block_append(p, node, print);
25506 NODE *irs = NEW_LIST(NEW_GVAR(rb_intern(
"$/"), LOC), LOC);
25509 ID ifs = rb_intern(
"$;");
25510 ID fields = rb_intern(
"$F");
25511 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
25512 NODE *split = NEW_GASGN(fields,
25513 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
25514 rb_intern(
"split"), args, LOC),
25516 node = block_append(p, split, node);
25519 NODE *chomp = NEW_LIT(
ID2SYM(rb_intern(
"chomp")), LOC);
25520 chomp = list_append(p, NEW_LIST(chomp, LOC), NEW_TRUE(LOC));
25521 irs = list_append(p, irs, NEW_HASH(chomp, LOC));
25524 node = NEW_WHILE((
NODE *)NEW_FCALL(idGets, irs, LOC), node, 1, LOC);
25541 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
25549 p->command_start = TRUE;
25550 p->ruby_sourcefile_string =
Qnil;
25551 p->lex.lpar_beg = -1;
25553 p->delayed.token =
Qnil;
25554 p->frozen_string_literal = -1;
25557 p->parsing_thread =
Qnil;
25559 p->error_buffer =
Qfalse;
25560 p->end_expect_token_locations =
Qnil;
25564 p->debug_buffer =
Qnil;
25565 p->debug_output = rb_ractor_stdout();
25566 p->enc = rb_utf8_encoding();
25571#define rb_ruby_parser_mark ripper_parser_mark
25572#define rb_ruby_parser_free ripper_parser_free
25573#define rb_ruby_parser_memsize ripper_parser_memsize
25577rb_ruby_parser_mark(
void *ptr)
25581 rb_gc_mark(p->lex.input);
25582 rb_gc_mark(p->lex.lastline);
25583 rb_gc_mark(p->lex.nextline);
25584 rb_gc_mark(p->ruby_sourcefile_string);
25585 rb_gc_mark((
VALUE)p->ast);
25586 rb_gc_mark(p->case_labels);
25587 rb_gc_mark(p->delayed.token);
25589 rb_gc_mark(p->debug_lines);
25590 rb_gc_mark(p->error_buffer);
25591 rb_gc_mark(p->end_expect_token_locations);
25592 rb_gc_mark(p->tokens);
25594 rb_gc_mark(p->value);
25595 rb_gc_mark(p->result);
25596 rb_gc_mark(p->parsing_thread);
25598 rb_gc_mark(p->debug_buffer);
25599 rb_gc_mark(p->debug_output);
25601 rb_gc_mark((
VALUE)p->heap);
25606rb_ruby_parser_free(
void *ptr)
25610#ifdef UNIVERSAL_PARSER
25611 rb_parser_config_t *config = p->config;
25615 ruby_sized_xfree(p->tokenbuf, p->toksiz);
25618 for (local = p->lvtbl; local; local = prev) {
25619 prev = local->prev;
25620 local_free(p, local);
25625 while ((ptinfo = p->token_info) != 0) {
25626 p->token_info = ptinfo->next;
25631 xfree(p->lex.strterm);
25632 p->lex.strterm = 0;
25636#ifdef UNIVERSAL_PARSER
25638 if (config->counter <= 0) {
25639 rb_ruby_parser_config_free(config);
25645rb_ruby_parser_memsize(
const void *ptr)
25649 size_t size =
sizeof(*p);
25652 for (local = p->lvtbl; local; local = local->prev) {
25653 size +=
sizeof(*local);
25654 if (local->vars) size += local->vars->capa *
sizeof(
ID);
25659#ifdef UNIVERSAL_PARSER
25660rb_parser_config_t *
25661rb_ruby_parser_config_new(
void *(*malloc)(
size_t size))
25663 return (rb_parser_config_t *)malloc(
sizeof(rb_parser_config_t));
25667rb_ruby_parser_config_free(rb_parser_config_t *config)
25669 config->free(config);
25673#ifndef UNIVERSAL_PARSER
25678 rb_ruby_parser_mark,
25679 rb_ruby_parser_free,
25680 rb_ruby_parser_memsize,
25682 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
25688#undef rb_reserved_word
25691rb_reserved_word(
const char *str,
unsigned int len)
25693 return reserved_word(str,
len);
25696#ifdef UNIVERSAL_PARSER
25698rb_ruby_parser_allocate(rb_parser_config_t *config)
25702 p->config = config;
25703 p->config->counter++;
25708rb_ruby_parser_new(rb_parser_config_t *config)
25711 rb_parser_t *p = rb_ruby_parser_allocate(config);
25712 parser_initialize(p);
25721 p->parent_iseq = base;
25728 if (!
RTEST(lines)) {
25731 else if (lines ==
Qtrue) {
25732 lines = rb_ary_new();
25736 rb_ary_modify(lines);
25738 p->debug_lines = lines;
25744 p->error_tolerant = 1;
25746 p->end_expect_token_locations = rb_ary_new();
25752 p->keep_tokens = 1;
25754 p->tokens = rb_ary_new();
25757#ifndef UNIVERSAL_PARSER
25759rb_parser_compile_file_path(
VALUE vparser,
VALUE fname,
VALUE file,
int start)
25765 return rb_ruby_parser_compile_file_path(p, fname, file, start);
25775 return rb_ruby_parser_compile_generic(p, lex_gets, fname, input, start);
25779rb_parser_compile_string(
VALUE vparser,
const char *f,
VALUE s,
int line)
25785 return rb_ruby_parser_compile_string(p, f, s, line);
25789rb_parser_compile_string_path(
VALUE vparser,
VALUE f,
VALUE s,
int line)
25795 return rb_ruby_parser_compile_string_path(p, f, s, line);
25799rb_parser_encoding(
VALUE vparser)
25804 return rb_ruby_parser_encoding(p);
25808rb_parser_end_seen_p(
VALUE vparser)
25813 return RBOOL(rb_ruby_parser_end_seen_p(p));
25817rb_parser_error_tolerant(
VALUE vparser)
25822 rb_ruby_parser_error_tolerant(p);
25826rb_parser_set_script_lines(
VALUE vparser,
VALUE lines)
25831 rb_ruby_parser_set_script_lines(p, lines);
25835rb_parser_keep_tokens(
VALUE vparser)
25840 rb_ruby_parser_keep_tokens(p);
25848 &parser_data_type, p);
25849 parser_initialize(p);
25859 rb_ruby_parser_set_context(p, base, main);
25864rb_parser_set_options(
VALUE vparser,
int print,
int loop,
int chomp,
int split)
25869 rb_ruby_parser_set_options(p, print, loop, chomp, split);
25873rb_parser_set_yydebug(
VALUE self,
VALUE flag)
25878 rb_ruby_parser_set_yydebug(p,
RTEST(flag));
25886 return rb_enc_from_encoding(p->enc);
25892 return p->ruby__end__seen;
25896rb_ruby_parser_set_yydebug(
rb_parser_t *p,
int flag)
25925 return p->debug_output;
25931 p->debug_output = output;
25937 return p->parsing_thread;
25943 p->parsing_thread = parsing_thread;
25949 p->lex.gets = gets;
25950 p->lex.input = input;
25952 p->ruby_sourcefile_string = sourcefile_string;
25953 p->ruby_sourcefile = sourcefile;
25954 p->ruby_sourceline = sourceline;
25970rb_ruby_parser_ruby_sourcefile_string(
rb_parser_t *p)
25972 return p->ruby_sourcefile_string;
25978 return p->ruby_sourceline;
25984 return p->lex.state;
25991 p->ast = rb_ast_new();
25992 ripper_yyparse((
void*)p);
25993 rb_ast_dispose(p->ast);
26000 return dedent_string(p,
string, width);
26006 return lex_get_str(p, s);
26012 return p->lex.input != 0;
26018 parser_initialize(p);
26024 return p->lex.ptok - p->lex.pbeg;
26030 return p->lex.pcur - p->lex.ptok;
26036 return p->lex.lastline;
26040rb_ruby_ripper_lex_state_name(
struct parser_params *p,
int state)
26042 return rb_parser_lex_state_name(p, (
enum lex_state_e)state);
26046rb_ruby_ripper_parser_allocate(
void)
26054#define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
26057#define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
26058#define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
26059 (new)->cnt = (cnt), (ptr))
26064 size_t cnt = HEAPCNT(1, size);
26068 return ADD2HEAP(n, cnt, ptr);
26072rb_parser_calloc(
struct parser_params *p,
size_t nelem,
size_t size)
26074 size_t cnt = HEAPCNT(nelem, size);
26076 void *ptr =
xcalloc(nelem, size);
26078 return ADD2HEAP(n, cnt, ptr);
26082rb_parser_realloc(
struct parser_params *p,
void *ptr,
size_t size)
26085 size_t cnt = HEAPCNT(1, size);
26087 if (ptr && (n = p->heap) != NULL) {
26089 if (n->ptr == ptr) {
26090 n->ptr = ptr =
xrealloc(ptr, size);
26091 if (n->cnt) n->cnt = cnt;
26094 }
while ((n = n->next) != NULL);
26098 return ADD2HEAP(n, cnt, ptr);
26106 while ((n = *prev) != NULL) {
26107 if (n->ptr == ptr) {
26117rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
26120 VALUE mesg = p->debug_buffer;
26124 rb_str_vcatf(mesg, fmt, ap);
26126 if (end_with_newline_p(p, mesg)) {
26127 rb_io_write(p->debug_output, mesg);
26128 p->debug_buffer =
Qnil;
26136 int lineno, column;
26139 lineno = loc->end_pos.lineno;
26140 column = loc->end_pos.column;
26143 lineno = p->ruby_sourceline;
26147 rb_io_flush(p->debug_output);
26151 rb_syntax_error_append(p->error_buffer,
26152 p->ruby_sourcefile_string,
26159count_char(
const char *str,
int c)
26162 while (str[n] == c) ++n;
26172RUBY_FUNC_EXPORTED
size_t
26173rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
26175 if (*yystr ==
'"') {
26176 size_t yyn = 0, bquote = 0;
26177 const char *yyp = yystr;
26183 bquote = count_char(yyp+1,
'`') + 1;
26184 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
26192 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
26193 if (yyres) memcpy(yyres + yyn, yyp, bquote);
26199 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
26200 if (yyres) memcpy(yyres + yyn, yyp, 3);
26205 goto do_not_strip_quotes;
26208 goto do_not_strip_quotes;
26211 if (*++yyp !=
'\\')
26212 goto do_not_strip_quotes;
26228 do_not_strip_quotes: ;
26231 if (!yyres)
return strlen(yystr);
26233 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
26243 if (x ==
Qfalse)
return x;
26244 if (x ==
Qtrue)
return x;
26245 if (
NIL_P(x))
return x;
26247 rb_raise(rb_eArgError,
"Qundef given");
26260 if (!nd_type_p((
NODE *)x, NODE_RIPPER)) {
26261 rb_raise(rb_eArgError,
"NODE given: %p", (
void *)x);
26263 x = ((
NODE *)x)->nd_rval;
26266 rb_raise(rb_eArgError,
"wrong type of ruby object: %p (%s)",
26270 rb_raise(rb_eArgError,
"hidden ruby object: %p (%s)",
26271 (
void *)x, rb_builtin_type_name(
TYPE(x)));
26277#define validate(x) ((x) = get_value(x))
26306 return rb_funcall(p->value, mid, 3, a, b, c);
26316 return rb_funcall(p->value, mid, 4, a, b, c, d);
26327 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
26340 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 ENC_CODERANGE_BROKEN
Old name of RUBY_ENC_CODERANGE_BROKEN.
#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.