diff --git a/.github/workflows/super-linter.yml b/.github/workflows/super-linter.yml index e6281cffb..538ccf072 100644 --- a/.github/workflows/super-linter.yml +++ b/.github/workflows/super-linter.yml @@ -19,7 +19,7 @@ jobs: # Full git history is needed to get a proper list of changed files within `super-linter` fetch-depth: 0 - name: Lint Code Base - uses: github/super-linter/slim@v4.10.0 + uses: github/super-linter/slim@v4.10.1 env: ERROR_ON_MISSING_EXEC_BIT: true VALIDATE_BASH: true diff --git a/include/mruby/internal.h b/include/mruby/internal.h index 0bb1910d0..ac5ecfbc2 100644 --- a/include/mruby/internal.h +++ b/include/mruby/internal.h @@ -38,6 +38,12 @@ int mrb_dump_irep_cstruct(mrb_state *mrb, const mrb_irep*, uint8_t flags, FILE * #endif #endif +/* codedump */ +void mrb_codedump_all(mrb_state *mrb, struct RProc *proc); +#ifndef MRB_NO_STDIO +void mrb_codedump_all_file(mrb_state *mrb, struct RProc *proc, FILE *out); +#endif + /* error */ mrb_value mrb_exc_inspect(mrb_state *mrb, mrb_value exc); mrb_value mrb_exc_backtrace(mrb_state *mrb, mrb_value exc); @@ -104,6 +110,7 @@ void mrb_rational_copy(mrb_state *mrb, mrb_value x, mrb_value y); struct RProc *mrb_closure_new(mrb_state*, const mrb_irep*); void mrb_proc_copy(mrb_state *mrb, struct RProc *a, struct RProc *b); mrb_int mrb_proc_arity(const struct RProc *p); +struct REnv *mrb_env_new(mrb_state *mrb, struct mrb_context *c, mrb_callinfo *ci, int nstacks, mrb_value *stack, struct RClass *tc); #endif /* range */ diff --git a/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c b/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c index 02a9a08e4..4ee4ab44a 100644 --- a/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +++ b/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -380,8 +381,6 @@ print_cmdline(int code_block_open) } #endif -void mrb_codedump_all(mrb_state*, struct RProc*); - static int check_keyword(const char *buf, const char *word) { diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 0a9da0e36..20d864806 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -6627,7 +6627,6 @@ parser_update_cxt(parser_state *p, mrbc_context *cxt) } } -void mrb_codedump_all(mrb_state*, struct RProc*); void mrb_parser_dump(mrb_state *mrb, node *tree, int offset); MRB_API void diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c index 9d0b70a3b..794b5cf91 100644 --- a/mrbgems/mruby-compiler/core/y.tab.c +++ b/mrbgems/mruby-compiler/core/y.tab.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.5.1. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -34,6 +34,10 @@ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. @@ -41,14 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ +/* Identify Bison output, and Bison version. */ +#define YYBISON 30802 -/* Identify Bison output. */ -#define YYBISON 1 - -/* Bison version. */ -#define YYBISON_VERSION "3.5.1" +/* Bison version string. */ +#define YYBISON_VERSION "3.8.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -1508,7 +1509,7 @@ heredoc_end(parser_state *p) /* xxx ----------------------------- */ -#line 1512 "mrbgems/mruby-compiler/core/y.tab.c" +#line 1513 "mrbgems/mruby-compiler/core/y.tab.c" # ifndef YY_CAST # ifdef __cplusplus @@ -1531,14 +1532,6 @@ heredoc_end(parser_state *p) # endif # endif -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 1 -#endif - /* Debug traces. */ #ifndef YYDEBUG @@ -1548,132 +1541,137 @@ heredoc_end(parser_state *p) extern int yydebug; #endif -/* Token type. */ +/* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { - keyword_class = 258, - keyword_module = 259, - keyword_def = 260, - keyword_begin = 261, - keyword_if = 262, - keyword_unless = 263, - keyword_while = 264, - keyword_until = 265, - keyword_for = 266, - keyword_undef = 267, - keyword_rescue = 268, - keyword_ensure = 269, - keyword_end = 270, - keyword_then = 271, - keyword_elsif = 272, - keyword_else = 273, - keyword_case = 274, - keyword_when = 275, - keyword_break = 276, - keyword_next = 277, - keyword_redo = 278, - keyword_retry = 279, - keyword_in = 280, - keyword_do = 281, - keyword_do_cond = 282, - keyword_do_block = 283, - keyword_do_LAMBDA = 284, - keyword_return = 285, - keyword_yield = 286, - keyword_super = 287, - keyword_self = 288, - keyword_nil = 289, - keyword_true = 290, - keyword_false = 291, - keyword_and = 292, - keyword_or = 293, - keyword_not = 294, - modifier_if = 295, - modifier_unless = 296, - modifier_while = 297, - modifier_until = 298, - modifier_rescue = 299, - keyword_alias = 300, - keyword_BEGIN = 301, - keyword_END = 302, - keyword__LINE__ = 303, - keyword__FILE__ = 304, - keyword__ENCODING__ = 305, - tIDENTIFIER = 306, - tFID = 307, - tGVAR = 308, - tIVAR = 309, - tCONSTANT = 310, - tCVAR = 311, - tLABEL_TAG = 312, - tINTEGER = 313, - tFLOAT = 314, - tCHAR = 315, - tXSTRING = 316, - tREGEXP = 317, - tSTRING = 318, - tSTRING_PART = 319, - tSTRING_MID = 320, - tNTH_REF = 321, - tBACK_REF = 322, - tREGEXP_END = 323, - tNUMPARAM = 324, - tUPLUS = 325, - tUMINUS = 326, - tCMP = 327, - tEQ = 328, - tEQQ = 329, - tNEQ = 330, - tGEQ = 331, - tLEQ = 332, - tANDOP = 333, - tOROP = 334, - tMATCH = 335, - tNMATCH = 336, - tDOT2 = 337, - tDOT3 = 338, - tBDOT2 = 339, - tBDOT3 = 340, - tAREF = 341, - tASET = 342, - tLSHFT = 343, - tRSHFT = 344, - tCOLON2 = 345, - tCOLON3 = 346, - tOP_ASGN = 347, - tASSOC = 348, - tLPAREN = 349, - tLPAREN_ARG = 350, - tRPAREN = 351, - tLBRACK = 352, - tLBRACE = 353, - tLBRACE_ARG = 354, - tSTAR = 355, - tPOW = 356, - tDSTAR = 357, - tAMPER = 358, - tLAMBDA = 359, - tANDDOT = 360, - tSYMBEG = 361, - tSTRING_BEG = 362, - tXSTRING_BEG = 363, - tSTRING_DVAR = 364, - tREGEXP_BEG = 365, - tWORDS_BEG = 366, - tSYMBOLS_BEG = 367, - tLAMBEG = 368, - tHEREDOC_BEG = 369, - tHEREDOC_END = 370, - tLITERAL_DELIM = 371, - tHD_LITERAL_DELIM = 372, - tHD_STRING_PART = 373, - tHD_STRING_MID = 374, - tLOWEST = 375, - tUMINUS_NUM = 376, - tLAST_TOKEN = 377 + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + keyword_class = 258, /* keyword_class */ + keyword_module = 259, /* keyword_module */ + keyword_def = 260, /* keyword_def */ + keyword_begin = 261, /* keyword_begin */ + keyword_if = 262, /* keyword_if */ + keyword_unless = 263, /* keyword_unless */ + keyword_while = 264, /* keyword_while */ + keyword_until = 265, /* keyword_until */ + keyword_for = 266, /* keyword_for */ + keyword_undef = 267, /* keyword_undef */ + keyword_rescue = 268, /* keyword_rescue */ + keyword_ensure = 269, /* keyword_ensure */ + keyword_end = 270, /* keyword_end */ + keyword_then = 271, /* keyword_then */ + keyword_elsif = 272, /* keyword_elsif */ + keyword_else = 273, /* keyword_else */ + keyword_case = 274, /* keyword_case */ + keyword_when = 275, /* keyword_when */ + keyword_break = 276, /* keyword_break */ + keyword_next = 277, /* keyword_next */ + keyword_redo = 278, /* keyword_redo */ + keyword_retry = 279, /* keyword_retry */ + keyword_in = 280, /* keyword_in */ + keyword_do = 281, /* keyword_do */ + keyword_do_cond = 282, /* keyword_do_cond */ + keyword_do_block = 283, /* keyword_do_block */ + keyword_do_LAMBDA = 284, /* keyword_do_LAMBDA */ + keyword_return = 285, /* keyword_return */ + keyword_yield = 286, /* keyword_yield */ + keyword_super = 287, /* keyword_super */ + keyword_self = 288, /* keyword_self */ + keyword_nil = 289, /* keyword_nil */ + keyword_true = 290, /* keyword_true */ + keyword_false = 291, /* keyword_false */ + keyword_and = 292, /* keyword_and */ + keyword_or = 293, /* keyword_or */ + keyword_not = 294, /* keyword_not */ + modifier_if = 295, /* modifier_if */ + modifier_unless = 296, /* modifier_unless */ + modifier_while = 297, /* modifier_while */ + modifier_until = 298, /* modifier_until */ + modifier_rescue = 299, /* modifier_rescue */ + keyword_alias = 300, /* keyword_alias */ + keyword_BEGIN = 301, /* keyword_BEGIN */ + keyword_END = 302, /* keyword_END */ + keyword__LINE__ = 303, /* keyword__LINE__ */ + keyword__FILE__ = 304, /* keyword__FILE__ */ + keyword__ENCODING__ = 305, /* keyword__ENCODING__ */ + tIDENTIFIER = 306, /* "local variable or method" */ + tFID = 307, /* "method" */ + tGVAR = 308, /* "global variable" */ + tIVAR = 309, /* "instance variable" */ + tCONSTANT = 310, /* "constant" */ + tCVAR = 311, /* "class variable" */ + tLABEL_TAG = 312, /* "label" */ + tINTEGER = 313, /* "integer literal" */ + tFLOAT = 314, /* "float literal" */ + tCHAR = 315, /* "character literal" */ + tXSTRING = 316, /* tXSTRING */ + tREGEXP = 317, /* tREGEXP */ + tSTRING = 318, /* tSTRING */ + tSTRING_PART = 319, /* tSTRING_PART */ + tSTRING_MID = 320, /* tSTRING_MID */ + tNTH_REF = 321, /* tNTH_REF */ + tBACK_REF = 322, /* tBACK_REF */ + tREGEXP_END = 323, /* tREGEXP_END */ + tNUMPARAM = 324, /* "numbered parameter" */ + tUPLUS = 325, /* "unary plus" */ + tUMINUS = 326, /* "unary minus" */ + tCMP = 327, /* "<=>" */ + tEQ = 328, /* "==" */ + tEQQ = 329, /* "===" */ + tNEQ = 330, /* "!=" */ + tGEQ = 331, /* ">=" */ + tLEQ = 332, /* "<=" */ + tANDOP = 333, /* "&&" */ + tOROP = 334, /* "||" */ + tMATCH = 335, /* "=~" */ + tNMATCH = 336, /* "!~" */ + tDOT2 = 337, /* ".." */ + tDOT3 = 338, /* "..." */ + tBDOT2 = 339, /* tBDOT2 */ + tBDOT3 = 340, /* tBDOT3 */ + tAREF = 341, /* tAREF */ + tASET = 342, /* tASET */ + tLSHFT = 343, /* "<<" */ + tRSHFT = 344, /* ">>" */ + tCOLON2 = 345, /* "::" */ + tCOLON3 = 346, /* tCOLON3 */ + tOP_ASGN = 347, /* tOP_ASGN */ + tASSOC = 348, /* "=>" */ + tLPAREN = 349, /* tLPAREN */ + tLPAREN_ARG = 350, /* "(" */ + tRPAREN = 351, /* ")" */ + tLBRACK = 352, /* "[" */ + tLBRACE = 353, /* tLBRACE */ + tLBRACE_ARG = 354, /* "{" */ + tSTAR = 355, /* "*" */ + tPOW = 356, /* tPOW */ + tDSTAR = 357, /* "**" */ + tAMPER = 358, /* "&" */ + tLAMBDA = 359, /* "->" */ + tANDDOT = 360, /* "&." */ + tSYMBEG = 361, /* "symbol" */ + tSTRING_BEG = 362, /* "string literal" */ + tXSTRING_BEG = 363, /* tXSTRING_BEG */ + tSTRING_DVAR = 364, /* tSTRING_DVAR */ + tREGEXP_BEG = 365, /* tREGEXP_BEG */ + tWORDS_BEG = 366, /* tWORDS_BEG */ + tSYMBOLS_BEG = 367, /* tSYMBOLS_BEG */ + tLAMBEG = 368, /* tLAMBEG */ + tHEREDOC_BEG = 369, /* "here document" */ + tHEREDOC_END = 370, /* tHEREDOC_END */ + tLITERAL_DELIM = 371, /* tLITERAL_DELIM */ + tHD_LITERAL_DELIM = 372, /* tHD_LITERAL_DELIM */ + tHD_STRING_PART = 373, /* tHD_STRING_PART */ + tHD_STRING_MID = 374, /* tHD_STRING_MID */ + tLOWEST = 375, /* tLOWEST */ + tUMINUS_NUM = 376, /* tUMINUS_NUM */ + tLAST_TOKEN = 377 /* tLAST_TOKEN */ }; + typedef enum yytokentype yytoken_kind_t; #endif /* Value type. */ @@ -1688,7 +1686,7 @@ union YYSTYPE stack_type stack; const struct vtable *vars; -#line 1692 "mrbgems/mruby-compiler/core/y.tab.c" +#line 1690 "mrbgems/mruby-compiler/core/y.tab.c" }; typedef union YYSTYPE YYSTYPE; @@ -1698,10 +1696,344 @@ typedef union YYSTYPE YYSTYPE; + int yyparse (parser_state *p); +/* Symbol kind. */ +enum yysymbol_kind_t +{ + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_keyword_class = 3, /* keyword_class */ + YYSYMBOL_keyword_module = 4, /* keyword_module */ + YYSYMBOL_keyword_def = 5, /* keyword_def */ + YYSYMBOL_keyword_begin = 6, /* keyword_begin */ + YYSYMBOL_keyword_if = 7, /* keyword_if */ + YYSYMBOL_keyword_unless = 8, /* keyword_unless */ + YYSYMBOL_keyword_while = 9, /* keyword_while */ + YYSYMBOL_keyword_until = 10, /* keyword_until */ + YYSYMBOL_keyword_for = 11, /* keyword_for */ + YYSYMBOL_keyword_undef = 12, /* keyword_undef */ + YYSYMBOL_keyword_rescue = 13, /* keyword_rescue */ + YYSYMBOL_keyword_ensure = 14, /* keyword_ensure */ + YYSYMBOL_keyword_end = 15, /* keyword_end */ + YYSYMBOL_keyword_then = 16, /* keyword_then */ + YYSYMBOL_keyword_elsif = 17, /* keyword_elsif */ + YYSYMBOL_keyword_else = 18, /* keyword_else */ + YYSYMBOL_keyword_case = 19, /* keyword_case */ + YYSYMBOL_keyword_when = 20, /* keyword_when */ + YYSYMBOL_keyword_break = 21, /* keyword_break */ + YYSYMBOL_keyword_next = 22, /* keyword_next */ + YYSYMBOL_keyword_redo = 23, /* keyword_redo */ + YYSYMBOL_keyword_retry = 24, /* keyword_retry */ + YYSYMBOL_keyword_in = 25, /* keyword_in */ + YYSYMBOL_keyword_do = 26, /* keyword_do */ + YYSYMBOL_keyword_do_cond = 27, /* keyword_do_cond */ + YYSYMBOL_keyword_do_block = 28, /* keyword_do_block */ + YYSYMBOL_keyword_do_LAMBDA = 29, /* keyword_do_LAMBDA */ + YYSYMBOL_keyword_return = 30, /* keyword_return */ + YYSYMBOL_keyword_yield = 31, /* keyword_yield */ + YYSYMBOL_keyword_super = 32, /* keyword_super */ + YYSYMBOL_keyword_self = 33, /* keyword_self */ + YYSYMBOL_keyword_nil = 34, /* keyword_nil */ + YYSYMBOL_keyword_true = 35, /* keyword_true */ + YYSYMBOL_keyword_false = 36, /* keyword_false */ + YYSYMBOL_keyword_and = 37, /* keyword_and */ + YYSYMBOL_keyword_or = 38, /* keyword_or */ + YYSYMBOL_keyword_not = 39, /* keyword_not */ + YYSYMBOL_modifier_if = 40, /* modifier_if */ + YYSYMBOL_modifier_unless = 41, /* modifier_unless */ + YYSYMBOL_modifier_while = 42, /* modifier_while */ + YYSYMBOL_modifier_until = 43, /* modifier_until */ + YYSYMBOL_modifier_rescue = 44, /* modifier_rescue */ + YYSYMBOL_keyword_alias = 45, /* keyword_alias */ + YYSYMBOL_keyword_BEGIN = 46, /* keyword_BEGIN */ + YYSYMBOL_keyword_END = 47, /* keyword_END */ + YYSYMBOL_keyword__LINE__ = 48, /* keyword__LINE__ */ + YYSYMBOL_keyword__FILE__ = 49, /* keyword__FILE__ */ + YYSYMBOL_keyword__ENCODING__ = 50, /* keyword__ENCODING__ */ + YYSYMBOL_tIDENTIFIER = 51, /* "local variable or method" */ + YYSYMBOL_tFID = 52, /* "method" */ + YYSYMBOL_tGVAR = 53, /* "global variable" */ + YYSYMBOL_tIVAR = 54, /* "instance variable" */ + YYSYMBOL_tCONSTANT = 55, /* "constant" */ + YYSYMBOL_tCVAR = 56, /* "class variable" */ + YYSYMBOL_tLABEL_TAG = 57, /* "label" */ + YYSYMBOL_tINTEGER = 58, /* "integer literal" */ + YYSYMBOL_tFLOAT = 59, /* "float literal" */ + YYSYMBOL_tCHAR = 60, /* "character literal" */ + YYSYMBOL_tXSTRING = 61, /* tXSTRING */ + YYSYMBOL_tREGEXP = 62, /* tREGEXP */ + YYSYMBOL_tSTRING = 63, /* tSTRING */ + YYSYMBOL_tSTRING_PART = 64, /* tSTRING_PART */ + YYSYMBOL_tSTRING_MID = 65, /* tSTRING_MID */ + YYSYMBOL_tNTH_REF = 66, /* tNTH_REF */ + YYSYMBOL_tBACK_REF = 67, /* tBACK_REF */ + YYSYMBOL_tREGEXP_END = 68, /* tREGEXP_END */ + YYSYMBOL_tNUMPARAM = 69, /* "numbered parameter" */ + YYSYMBOL_tUPLUS = 70, /* "unary plus" */ + YYSYMBOL_tUMINUS = 71, /* "unary minus" */ + YYSYMBOL_tCMP = 72, /* "<=>" */ + YYSYMBOL_tEQ = 73, /* "==" */ + YYSYMBOL_tEQQ = 74, /* "===" */ + YYSYMBOL_tNEQ = 75, /* "!=" */ + YYSYMBOL_tGEQ = 76, /* ">=" */ + YYSYMBOL_tLEQ = 77, /* "<=" */ + YYSYMBOL_tANDOP = 78, /* "&&" */ + YYSYMBOL_tOROP = 79, /* "||" */ + YYSYMBOL_tMATCH = 80, /* "=~" */ + YYSYMBOL_tNMATCH = 81, /* "!~" */ + YYSYMBOL_tDOT2 = 82, /* ".." */ + YYSYMBOL_tDOT3 = 83, /* "..." */ + YYSYMBOL_tBDOT2 = 84, /* tBDOT2 */ + YYSYMBOL_tBDOT3 = 85, /* tBDOT3 */ + YYSYMBOL_tAREF = 86, /* tAREF */ + YYSYMBOL_tASET = 87, /* tASET */ + YYSYMBOL_tLSHFT = 88, /* "<<" */ + YYSYMBOL_tRSHFT = 89, /* ">>" */ + YYSYMBOL_tCOLON2 = 90, /* "::" */ + YYSYMBOL_tCOLON3 = 91, /* tCOLON3 */ + YYSYMBOL_tOP_ASGN = 92, /* tOP_ASGN */ + YYSYMBOL_tASSOC = 93, /* "=>" */ + YYSYMBOL_tLPAREN = 94, /* tLPAREN */ + YYSYMBOL_tLPAREN_ARG = 95, /* "(" */ + YYSYMBOL_tRPAREN = 96, /* ")" */ + YYSYMBOL_tLBRACK = 97, /* "[" */ + YYSYMBOL_tLBRACE = 98, /* tLBRACE */ + YYSYMBOL_tLBRACE_ARG = 99, /* "{" */ + YYSYMBOL_tSTAR = 100, /* "*" */ + YYSYMBOL_tPOW = 101, /* tPOW */ + YYSYMBOL_tDSTAR = 102, /* "**" */ + YYSYMBOL_tAMPER = 103, /* "&" */ + YYSYMBOL_tLAMBDA = 104, /* "->" */ + YYSYMBOL_tANDDOT = 105, /* "&." */ + YYSYMBOL_tSYMBEG = 106, /* "symbol" */ + YYSYMBOL_tSTRING_BEG = 107, /* "string literal" */ + YYSYMBOL_tXSTRING_BEG = 108, /* tXSTRING_BEG */ + YYSYMBOL_tSTRING_DVAR = 109, /* tSTRING_DVAR */ + YYSYMBOL_tREGEXP_BEG = 110, /* tREGEXP_BEG */ + YYSYMBOL_tWORDS_BEG = 111, /* tWORDS_BEG */ + YYSYMBOL_tSYMBOLS_BEG = 112, /* tSYMBOLS_BEG */ + YYSYMBOL_tLAMBEG = 113, /* tLAMBEG */ + YYSYMBOL_tHEREDOC_BEG = 114, /* "here document" */ + YYSYMBOL_tHEREDOC_END = 115, /* tHEREDOC_END */ + YYSYMBOL_tLITERAL_DELIM = 116, /* tLITERAL_DELIM */ + YYSYMBOL_tHD_LITERAL_DELIM = 117, /* tHD_LITERAL_DELIM */ + YYSYMBOL_tHD_STRING_PART = 118, /* tHD_STRING_PART */ + YYSYMBOL_tHD_STRING_MID = 119, /* tHD_STRING_MID */ + YYSYMBOL_tLOWEST = 120, /* tLOWEST */ + YYSYMBOL_121_ = 121, /* '=' */ + YYSYMBOL_122_ = 122, /* '?' */ + YYSYMBOL_123_ = 123, /* ':' */ + YYSYMBOL_124_ = 124, /* '>' */ + YYSYMBOL_125_ = 125, /* '<' */ + YYSYMBOL_126_ = 126, /* '|' */ + YYSYMBOL_127_ = 127, /* '^' */ + YYSYMBOL_128_ = 128, /* '&' */ + YYSYMBOL_129_ = 129, /* '+' */ + YYSYMBOL_130_ = 130, /* '-' */ + YYSYMBOL_131_ = 131, /* '*' */ + YYSYMBOL_132_ = 132, /* '/' */ + YYSYMBOL_133_ = 133, /* '%' */ + YYSYMBOL_tUMINUS_NUM = 134, /* tUMINUS_NUM */ + YYSYMBOL_135_ = 135, /* '!' */ + YYSYMBOL_136_ = 136, /* '~' */ + YYSYMBOL_tLAST_TOKEN = 137, /* tLAST_TOKEN */ + YYSYMBOL_138_ = 138, /* '{' */ + YYSYMBOL_139_ = 139, /* '}' */ + YYSYMBOL_140_ = 140, /* '[' */ + YYSYMBOL_141_ = 141, /* ']' */ + YYSYMBOL_142_ = 142, /* ',' */ + YYSYMBOL_143_ = 143, /* '`' */ + YYSYMBOL_144_ = 144, /* '(' */ + YYSYMBOL_145_ = 145, /* ')' */ + YYSYMBOL_146_ = 146, /* ';' */ + YYSYMBOL_147_ = 147, /* '.' */ + YYSYMBOL_148_n_ = 148, /* '\n' */ + YYSYMBOL_YYACCEPT = 149, /* $accept */ + YYSYMBOL_program = 150, /* program */ + YYSYMBOL_151_1 = 151, /* $@1 */ + YYSYMBOL_top_compstmt = 152, /* top_compstmt */ + YYSYMBOL_top_stmts = 153, /* top_stmts */ + YYSYMBOL_top_stmt = 154, /* top_stmt */ + YYSYMBOL_155_2 = 155, /* @2 */ + YYSYMBOL_bodystmt = 156, /* bodystmt */ + YYSYMBOL_compstmt = 157, /* compstmt */ + YYSYMBOL_stmts = 158, /* stmts */ + YYSYMBOL_stmt = 159, /* stmt */ + YYSYMBOL_160_3 = 160, /* $@3 */ + YYSYMBOL_command_asgn = 161, /* command_asgn */ + YYSYMBOL_command_rhs = 162, /* command_rhs */ + YYSYMBOL_expr = 163, /* expr */ + YYSYMBOL_defn_head = 164, /* defn_head */ + YYSYMBOL_defs_head = 165, /* defs_head */ + YYSYMBOL_166_4 = 166, /* $@4 */ + YYSYMBOL_expr_value = 167, /* expr_value */ + YYSYMBOL_command_call = 168, /* command_call */ + YYSYMBOL_block_command = 169, /* block_command */ + YYSYMBOL_cmd_brace_block = 170, /* cmd_brace_block */ + YYSYMBOL_171_5 = 171, /* $@5 */ + YYSYMBOL_command = 172, /* command */ + YYSYMBOL_mlhs = 173, /* mlhs */ + YYSYMBOL_mlhs_inner = 174, /* mlhs_inner */ + YYSYMBOL_mlhs_basic = 175, /* mlhs_basic */ + YYSYMBOL_mlhs_item = 176, /* mlhs_item */ + YYSYMBOL_mlhs_list = 177, /* mlhs_list */ + YYSYMBOL_mlhs_post = 178, /* mlhs_post */ + YYSYMBOL_mlhs_node = 179, /* mlhs_node */ + YYSYMBOL_lhs = 180, /* lhs */ + YYSYMBOL_cname = 181, /* cname */ + YYSYMBOL_cpath = 182, /* cpath */ + YYSYMBOL_fname = 183, /* fname */ + YYSYMBOL_fsym = 184, /* fsym */ + YYSYMBOL_undef_list = 185, /* undef_list */ + YYSYMBOL_186_6 = 186, /* $@6 */ + YYSYMBOL_op = 187, /* op */ + YYSYMBOL_reswords = 188, /* reswords */ + YYSYMBOL_arg = 189, /* arg */ + YYSYMBOL_aref_args = 190, /* aref_args */ + YYSYMBOL_arg_rhs = 191, /* arg_rhs */ + YYSYMBOL_paren_args = 192, /* paren_args */ + YYSYMBOL_opt_paren_args = 193, /* opt_paren_args */ + YYSYMBOL_opt_call_args = 194, /* opt_call_args */ + YYSYMBOL_call_args = 195, /* call_args */ + YYSYMBOL_command_args = 196, /* command_args */ + YYSYMBOL_197_7 = 197, /* @7 */ + YYSYMBOL_block_arg = 198, /* block_arg */ + YYSYMBOL_opt_block_arg = 199, /* opt_block_arg */ + YYSYMBOL_comma = 200, /* comma */ + YYSYMBOL_args = 201, /* args */ + YYSYMBOL_mrhs = 202, /* mrhs */ + YYSYMBOL_primary = 203, /* primary */ + YYSYMBOL_204_8 = 204, /* @8 */ + YYSYMBOL_205_9 = 205, /* @9 */ + YYSYMBOL_206_10 = 206, /* $@10 */ + YYSYMBOL_207_11 = 207, /* $@11 */ + YYSYMBOL_208_12 = 208, /* @12 */ + YYSYMBOL_209_13 = 209, /* @13 */ + YYSYMBOL_210_14 = 210, /* $@14 */ + YYSYMBOL_211_15 = 211, /* $@15 */ + YYSYMBOL_212_16 = 212, /* $@16 */ + YYSYMBOL_213_17 = 213, /* $@17 */ + YYSYMBOL_214_18 = 214, /* $@18 */ + YYSYMBOL_215_19 = 215, /* $@19 */ + YYSYMBOL_216_20 = 216, /* @20 */ + YYSYMBOL_217_21 = 217, /* @21 */ + YYSYMBOL_218_22 = 218, /* @22 */ + YYSYMBOL_219_23 = 219, /* @23 */ + YYSYMBOL_primary_value = 220, /* primary_value */ + YYSYMBOL_then = 221, /* then */ + YYSYMBOL_do = 222, /* do */ + YYSYMBOL_if_tail = 223, /* if_tail */ + YYSYMBOL_opt_else = 224, /* opt_else */ + YYSYMBOL_for_var = 225, /* for_var */ + YYSYMBOL_f_margs = 226, /* f_margs */ + YYSYMBOL_227_24 = 227, /* $@24 */ + YYSYMBOL_block_args_tail = 228, /* block_args_tail */ + YYSYMBOL_opt_block_args_tail = 229, /* opt_block_args_tail */ + YYSYMBOL_block_param = 230, /* block_param */ + YYSYMBOL_opt_block_param = 231, /* opt_block_param */ + YYSYMBOL_block_param_def = 232, /* block_param_def */ + YYSYMBOL_233_25 = 233, /* $@25 */ + YYSYMBOL_opt_bv_decl = 234, /* opt_bv_decl */ + YYSYMBOL_bv_decls = 235, /* bv_decls */ + YYSYMBOL_bvar = 236, /* bvar */ + YYSYMBOL_f_larglist = 237, /* f_larglist */ + YYSYMBOL_lambda_body = 238, /* lambda_body */ + YYSYMBOL_do_block = 239, /* do_block */ + YYSYMBOL_240_26 = 240, /* $@26 */ + YYSYMBOL_block_call = 241, /* block_call */ + YYSYMBOL_method_call = 242, /* method_call */ + YYSYMBOL_brace_block = 243, /* brace_block */ + YYSYMBOL_244_27 = 244, /* @27 */ + YYSYMBOL_245_28 = 245, /* @28 */ + YYSYMBOL_case_body = 246, /* case_body */ + YYSYMBOL_cases = 247, /* cases */ + YYSYMBOL_opt_rescue = 248, /* opt_rescue */ + YYSYMBOL_exc_list = 249, /* exc_list */ + YYSYMBOL_exc_var = 250, /* exc_var */ + YYSYMBOL_opt_ensure = 251, /* opt_ensure */ + YYSYMBOL_literal = 252, /* literal */ + YYSYMBOL_string = 253, /* string */ + YYSYMBOL_string_fragment = 254, /* string_fragment */ + YYSYMBOL_string_rep = 255, /* string_rep */ + YYSYMBOL_string_interp = 256, /* string_interp */ + YYSYMBOL_257_29 = 257, /* @29 */ + YYSYMBOL_xstring = 258, /* xstring */ + YYSYMBOL_regexp = 259, /* regexp */ + YYSYMBOL_heredoc = 260, /* heredoc */ + YYSYMBOL_heredoc_bodies = 261, /* heredoc_bodies */ + YYSYMBOL_heredoc_body = 262, /* heredoc_body */ + YYSYMBOL_heredoc_string_rep = 263, /* heredoc_string_rep */ + YYSYMBOL_heredoc_string_interp = 264, /* heredoc_string_interp */ + YYSYMBOL_265_30 = 265, /* @30 */ + YYSYMBOL_words = 266, /* words */ + YYSYMBOL_symbol = 267, /* symbol */ + YYSYMBOL_basic_symbol = 268, /* basic_symbol */ + YYSYMBOL_sym = 269, /* sym */ + YYSYMBOL_symbols = 270, /* symbols */ + YYSYMBOL_numeric = 271, /* numeric */ + YYSYMBOL_variable = 272, /* variable */ + YYSYMBOL_var_lhs = 273, /* var_lhs */ + YYSYMBOL_var_ref = 274, /* var_ref */ + YYSYMBOL_backref = 275, /* backref */ + YYSYMBOL_superclass = 276, /* superclass */ + YYSYMBOL_277_31 = 277, /* $@31 */ + YYSYMBOL_f_opt_arglist_paren = 278, /* f_opt_arglist_paren */ + YYSYMBOL_f_arglist_paren = 279, /* f_arglist_paren */ + YYSYMBOL_f_arglist = 280, /* f_arglist */ + YYSYMBOL_f_label = 281, /* f_label */ + YYSYMBOL_f_kw = 282, /* f_kw */ + YYSYMBOL_f_block_kw = 283, /* f_block_kw */ + YYSYMBOL_f_block_kwarg = 284, /* f_block_kwarg */ + YYSYMBOL_f_kwarg = 285, /* f_kwarg */ + YYSYMBOL_kwrest_mark = 286, /* kwrest_mark */ + YYSYMBOL_f_kwrest = 287, /* f_kwrest */ + YYSYMBOL_args_tail = 288, /* args_tail */ + YYSYMBOL_opt_args_tail = 289, /* opt_args_tail */ + YYSYMBOL_f_args = 290, /* f_args */ + YYSYMBOL_f_bad_arg = 291, /* f_bad_arg */ + YYSYMBOL_f_norm_arg = 292, /* f_norm_arg */ + YYSYMBOL_f_arg_item = 293, /* f_arg_item */ + YYSYMBOL_294_32 = 294, /* @32 */ + YYSYMBOL_f_arg = 295, /* f_arg */ + YYSYMBOL_f_opt_asgn = 296, /* f_opt_asgn */ + YYSYMBOL_f_opt = 297, /* f_opt */ + YYSYMBOL_f_block_opt = 298, /* f_block_opt */ + YYSYMBOL_f_block_optarg = 299, /* f_block_optarg */ + YYSYMBOL_f_optarg = 300, /* f_optarg */ + YYSYMBOL_restarg_mark = 301, /* restarg_mark */ + YYSYMBOL_f_rest_arg = 302, /* f_rest_arg */ + YYSYMBOL_blkarg_mark = 303, /* blkarg_mark */ + YYSYMBOL_f_block_arg = 304, /* f_block_arg */ + YYSYMBOL_opt_f_block_arg = 305, /* opt_f_block_arg */ + YYSYMBOL_singleton = 306, /* singleton */ + YYSYMBOL_307_33 = 307, /* $@33 */ + YYSYMBOL_assoc_list = 308, /* assoc_list */ + YYSYMBOL_assocs = 309, /* assocs */ + YYSYMBOL_assoc = 310, /* assoc */ + YYSYMBOL_operation = 311, /* operation */ + YYSYMBOL_operation2 = 312, /* operation2 */ + YYSYMBOL_operation3 = 313, /* operation3 */ + YYSYMBOL_dot_or_colon = 314, /* dot_or_colon */ + YYSYMBOL_call_op = 315, /* call_op */ + YYSYMBOL_call_op2 = 316, /* call_op2 */ + YYSYMBOL_opt_terms = 317, /* opt_terms */ + YYSYMBOL_opt_nl = 318, /* opt_nl */ + YYSYMBOL_rparen = 319, /* rparen */ + YYSYMBOL_trailer = 320, /* trailer */ + YYSYMBOL_term = 321, /* term */ + YYSYMBOL_nl = 322, /* nl */ + YYSYMBOL_terms = 323, /* terms */ + YYSYMBOL_none = 324 /* none */ +}; +typedef enum yysymbol_kind_t yysymbol_kind_t; + + #ifdef short @@ -1741,6 +2073,18 @@ typedef int_least16_t yytype_int16; typedef short yytype_int16; #endif +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + . */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ @@ -1800,6 +2144,7 @@ typedef int yytype_uint16; #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + /* Stored state numbers (used for stacks). */ typedef yytype_int16 yy_state_t; @@ -1818,6 +2163,7 @@ typedef int yy_state_fast_t; # endif #endif + #ifndef YY_ATTRIBUTE_PURE # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) @@ -1836,17 +2182,23 @@ typedef int yy_state_fast_t; /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) +# define YY_USE(E) ((void) (E)) #else -# define YYUSE(E) /* empty */ +# define YY_USE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else @@ -1875,7 +2227,7 @@ typedef int yy_state_fast_t; #define YY_ASSERT(E) ((void) (0 && (E))) -#if ! defined yyoverflow || YYERROR_VERBOSE +#if 1 /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -1940,8 +2292,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - +#endif /* 1 */ #if (! defined yyoverflow \ && (! defined __cplusplus \ @@ -2017,14 +2368,16 @@ union yyalloc /* YYNSTATES -- Number of states. */ #define YYNSTATES 1084 -#define YYUNDEFTOK 2 +/* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 377 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ @@ -2071,7 +2424,7 @@ static const yytype_uint8 yytranslate[] = }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { 0, 1625, 1625, 1625, 1636, 1642, 1646, 1651, 1655, 1661, @@ -2139,26 +2492,34 @@ static const yytype_int16 yyrline[] = }; #endif -#if YYDEBUG || YYERROR_VERBOSE || 1 +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if 1 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "keyword_class", "keyword_module", - "keyword_def", "keyword_begin", "keyword_if", "keyword_unless", - "keyword_while", "keyword_until", "keyword_for", "keyword_undef", - "keyword_rescue", "keyword_ensure", "keyword_end", "keyword_then", - "keyword_elsif", "keyword_else", "keyword_case", "keyword_when", - "keyword_break", "keyword_next", "keyword_redo", "keyword_retry", - "keyword_in", "keyword_do", "keyword_do_cond", "keyword_do_block", - "keyword_do_LAMBDA", "keyword_return", "keyword_yield", "keyword_super", - "keyword_self", "keyword_nil", "keyword_true", "keyword_false", - "keyword_and", "keyword_or", "keyword_not", "modifier_if", - "modifier_unless", "modifier_while", "modifier_until", "modifier_rescue", - "keyword_alias", "keyword_BEGIN", "keyword_END", "keyword__LINE__", - "keyword__FILE__", "keyword__ENCODING__", "\"local variable or method\"", - "\"method\"", "\"global variable\"", "\"instance variable\"", - "\"constant\"", "\"class variable\"", "\"label\"", "\"integer literal\"", + "\"end of file\"", "error", "\"invalid token\"", "keyword_class", + "keyword_module", "keyword_def", "keyword_begin", "keyword_if", + "keyword_unless", "keyword_while", "keyword_until", "keyword_for", + "keyword_undef", "keyword_rescue", "keyword_ensure", "keyword_end", + "keyword_then", "keyword_elsif", "keyword_else", "keyword_case", + "keyword_when", "keyword_break", "keyword_next", "keyword_redo", + "keyword_retry", "keyword_in", "keyword_do", "keyword_do_cond", + "keyword_do_block", "keyword_do_LAMBDA", "keyword_return", + "keyword_yield", "keyword_super", "keyword_self", "keyword_nil", + "keyword_true", "keyword_false", "keyword_and", "keyword_or", + "keyword_not", "modifier_if", "modifier_unless", "modifier_while", + "modifier_until", "modifier_rescue", "keyword_alias", "keyword_BEGIN", + "keyword_END", "keyword__LINE__", "keyword__FILE__", + "keyword__ENCODING__", "\"local variable or method\"", "\"method\"", + "\"global variable\"", "\"instance variable\"", "\"constant\"", + "\"class variable\"", "\"label\"", "\"integer literal\"", "\"float literal\"", "\"character literal\"", "tXSTRING", "tREGEXP", "tSTRING", "tSTRING_PART", "tSTRING_MID", "tNTH_REF", "tBACK_REF", "tREGEXP_END", "\"numbered parameter\"", "\"unary plus\"", @@ -2206,30 +2567,13 @@ static const char *const yytname[] = "dot_or_colon", "call_op", "call_op2", "opt_terms", "opt_nl", "rparen", "trailer", "term", "nl", "terms", "none", YY_NULLPTR }; -#endif -# ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_int16 yytoknum[] = +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) { - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 61, 63, 58, 62, 60, 124, 94, 38, 43, - 45, 42, 47, 37, 376, 33, 126, 377, 123, 125, - 91, 93, 44, 96, 40, 41, 59, 46, 10 -}; -# endif + return yytname[yysymbol]; +} +#endif #define YYPACT_NINF (-868) @@ -2241,8 +2585,8 @@ static const yytype_int16 yytoknum[] = #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ static const yytype_int16 yypact[] = { -868, 115, 3515, -868, 8231, 10355, 10697, 6539, -868, 10001, @@ -2356,9 +2700,9 @@ static const yytype_int16 yypact[] = -868, -868, 750, -868 }; - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ +/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_int16 yydefact[] = { 2, 0, 0, 1, 0, 0, 0, 0, 295, 0, @@ -2472,7 +2816,7 @@ static const yytype_int16 yydefact[] = 377, 380, 370, 372 }; - /* YYPGOTO[NTERM-NUM]. */ +/* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -868, -868, -868, 411, -868, 25, -868, -282, 693, -868, @@ -2495,10 +2839,10 @@ static const yytype_int16 yypgoto[] = 806, -253, 394, -284, -65, -2 }; - /* YYDEFGOTO[NTERM-NUM]. */ +/* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 2, 68, 69, 70, 287, 464, 465, 298, + 0, 1, 2, 68, 69, 70, 287, 464, 465, 298, 299, 520, 72, 615, 73, 213, 214, 688, 215, 76, 77, 676, 819, 78, 79, 300, 80, 81, 82, 545, 83, 216, 123, 124, 243, 244, 245, 713, 653, 207, @@ -2518,9 +2862,9 @@ static const yytype_int16 yydefgoto[] = 517, 536, 257, 258, 259, 302 }; - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ +/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { 106, 519, 266, 266, 348, 285, 266, 344, 440, 286, @@ -5149,8 +5493,8 @@ static const yytype_int16 yycheck[] = 131, 132, 133 }; - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ static const yytype_int16 yystos[] = { 0, 150, 151, 0, 1, 3, 4, 5, 6, 7, @@ -5264,7 +5608,7 @@ static const yytype_int16 yystos[] = 229, 229, 295, 229 }; - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { 0, 149, 151, 150, 152, 153, 153, 153, 153, 154, @@ -5331,7 +5675,7 @@ static const yytype_int16 yyr1[] = 320, 320, 320, 321, 321, 322, 322, 323, 323, 324 }; - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ static const yytype_int8 yyr2[] = { 0, 2, 0, 2, 2, 1, 1, 3, 2, 1, @@ -5399,14 +5743,15 @@ static const yytype_int8 yyr2[] = }; +enum { YYENOMEM = -2 }; + #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab #define YYRECOVERING() (!!yyerrstatus) @@ -5428,10 +5773,9 @@ static const yytype_int8 yyr2[] = } \ while (0) -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF /* Enable debugging if requested. */ @@ -5448,19 +5792,16 @@ do { \ YYFPRINTF Args; \ } while (0) -/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ + +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ - Type, Value, p); \ + Kind, Value, p); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) @@ -5471,19 +5812,16 @@ do { \ `-----------------------------------*/ static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, parser_state *p) +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, parser_state *p) { FILE *yyoutput = yyo; - YYUSE (yyoutput); - YYUSE (p); + YY_USE (yyoutput); + YY_USE (p); if (!yyvaluep) return; -# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); -# endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -5493,12 +5831,13 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, pa `---------------------------*/ static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, parser_state *p) +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, parser_state *p) { YYFPRINTF (yyo, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); - yy_symbol_value_print (yyo, yytype, yyvaluep, p); + yy_symbol_value_print (yyo, yykind, yyvaluep, p); YYFPRINTF (yyo, ")"); } @@ -5531,7 +5870,8 @@ do { \ `------------------------------------------------*/ static void -yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule, parser_state *p) +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, + int yyrule, parser_state *p) { int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; @@ -5543,9 +5883,8 @@ yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule, parser_state *p) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - yystos[+yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] - , p); + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)], p); YYFPRINTF (stderr, "\n"); } } @@ -5560,8 +5899,8 @@ do { \ multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ @@ -5584,12 +5923,60 @@ int yydebug; #endif -#if YYERROR_VERBOSE +/* Context of a parse error. */ +typedef struct +{ + yy_state_t *yyssp; + yysymbol_kind_t yytoken; +} yypcontext_t; -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) -# else +/* Put in YYARG at most YYARGN of the expected tokens given the + current YYCTX, and return the number of tokens stored in YYARG. If + YYARG is null, return the number of expected tokens (guaranteed to + be less than YYNTOKENS). Return YYENOMEM on memory exhaustion. + Return 0 if there are more than YYARGN expected tokens, yet fill + YYARG up to YYARGN. */ +static int +yypcontext_expected_tokens (const yypcontext_t *yyctx, + yysymbol_kind_t yyarg[], int yyargn) +{ + /* Actual size of YYARG. */ + int yycount = 0; + int yyn = yypact[+*yyctx->yyssp]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (!yyarg) + ++yycount; + else if (yycount == yyargn) + return 0; + else + yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx); + } + } + if (yyarg && yycount == 0 && 0 < yyargn) + yyarg[0] = YYSYMBOL_YYEMPTY; + return yycount; +} + + + + +#ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) +# else /* Return the length of YYSTR. */ static YYPTRDIFF_T yystrlen (const char *yystr) @@ -5599,13 +5986,13 @@ yystrlen (const char *yystr) continue; return yylen; } -# endif # endif +#endif -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else +#ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ static char * @@ -5619,10 +6006,10 @@ yystpcpy (char *yydest, const char *yysrc) return yyd - 1; } -# endif # endif +#endif -# ifndef yytnamerr +#ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string @@ -5637,7 +6024,6 @@ yytnamerr (char *yyres, const char *yystr) { YYPTRDIFF_T yyn = 0; char const *yyp = yystr; - for (;;) switch (*++yyp) { @@ -5671,31 +6057,15 @@ yytnamerr (char *yyres, const char *yystr) else return yystrlen (yystr); } -# endif +#endif -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ static int -yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, - yy_state_t *yyssp, int yytoken) +yy_syntax_error_arguments (const yypcontext_t *yyctx, + yysymbol_kind_t yyarg[], int yyargn) { - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat: reported tokens (one for the "unexpected", - one per "expected"). */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Actual size of YYARG. */ int yycount = 0; - /* Cumulated lengths of YYARG. */ - YYPTRDIFF_T yysize = 0; - /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action @@ -5719,52 +6089,54 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ - if (yytoken != YYEMPTY) + if (yyctx->yytoken != YYSYMBOL_YYEMPTY) { - int yyn = yypact[+*yyssp]; - YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - yysize = yysize0; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYPTRDIFF_T yysize1 - = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - } - } + int yyn; + if (yyarg) + yyarg[yycount] = yyctx->yytoken; + ++yycount; + yyn = yypcontext_expected_tokens (yyctx, + yyarg ? yyarg + 1 : yyarg, yyargn - 1); + if (yyn == YYENOMEM) + return YYENOMEM; + else + yycount += yyn; } + return yycount; +} + +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return -1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return YYENOMEM if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, + const yypcontext_t *yyctx) +{ + enum { YYARGS_MAX = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULLPTR; + /* Arguments of yyformat: reported tokens (one for the "unexpected", + one per "expected"). */ + yysymbol_kind_t yyarg[YYARGS_MAX]; + /* Cumulated lengths of YYARG. */ + YYPTRDIFF_T yysize = 0; + + /* Actual size of YYARG. */ + int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX); + if (yycount == YYENOMEM) + return YYENOMEM; switch (yycount) { -# define YYCASE_(N, S) \ +#define YYCASE_(N, S) \ case N: \ yyformat = S; \ - break + break default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); @@ -5772,17 +6144,23 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ +#undef YYCASE_ } + /* Compute error message size. Don't count the "%s"s, but reserve + room for the terminator. */ + yysize = yystrlen (yyformat) - 2 * yycount + 1; { - /* Don't count the "%s"s in the final size, but reserve room for - the terminator. */ - YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; + int yyi; + for (yyi = 0; yyi < yycount; ++yyi) + { + YYPTRDIFF_T yysize1 + = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]); + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else + return YYENOMEM; + } } if (*yymsg_alloc < yysize) @@ -5791,7 +6169,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; + return -1; } /* Avoid sprintf, as that infringes on the user's name space. @@ -5803,7 +6181,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { - yyp += yytnamerr (yyp, yyarg[yyi++]); + yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]); yyformat += 2; } else @@ -5814,29 +6192,32 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, } return 0; } -#endif /* YYERROR_VERBOSE */ + /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, parser_state *p) +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep, parser_state *p) { - YYUSE (yyvaluep); - YYUSE (p); + YY_USE (yyvaluep); + YY_USE (p); if (!yymsg) yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } + + /*----------. | yyparse. | `----------*/ @@ -5844,7 +6225,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, parser_state *p) int yyparse (parser_state *p) { -/* The lookahead symbol. */ +/* Lookahead token kind. */ int yychar; @@ -5855,45 +6236,41 @@ YY_INITIAL_VALUE (static YYSTYPE yyval_default;) YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Number of syntax errors so far. */ - int yynerrs; + int yynerrs = 0; - yy_state_fast_t yystate; + yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + int yyerrstatus = 0; - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow + /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ - /* The state stack. */ + /* Their size. */ + YYPTRDIFF_T yystacksize = YYINITDEPTH; + + /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; - /* The semantic value stack. */ + /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - - YYPTRDIFF_T yystacksize; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; int yyn; + /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; + /* Lookahead symbol kind. */ + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; -#if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; -#endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -5901,16 +6278,10 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Keep to zero when no symbol should be popped. */ int yylen = 0; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; - YYDPRINTF ((stderr, "Starting parse\n")); - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ + goto yysetstate; @@ -5932,10 +6303,11 @@ yysetstate: YY_IGNORE_USELESS_CAST_BEGIN *yyssp = YY_CAST (yy_state_t, yystate); YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; + YYNOMEM; #else { /* Get the current used size of the three stacks, in elements. */ @@ -5963,7 +6335,7 @@ yysetstate: # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + YYNOMEM; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; @@ -5974,10 +6346,10 @@ yysetstate: YY_CAST (union yyalloc *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) - goto yyexhaustedlab; + YYNOMEM; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } @@ -5996,6 +6368,7 @@ yysetstate: } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + if (yystate == YYFINAL) YYACCEPT; @@ -6016,18 +6389,29 @@ yybackup: /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, "Reading a token: ")); + YYDPRINTF ((stderr, "Reading a token\n")); yychar = yylex (&yylval, p); } if (yychar <= YYEOF) { - yychar = yytoken = YYEOF; + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + goto yyerrlab1; + } else { yytoken = YYTRANSLATE (yychar); @@ -6096,75 +6480,75 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 2: + case 2: /* $@1: %empty */ #line 1625 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_BEG; if (!p->locals) p->locals = cons(0,0); } -#line 6106 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6490 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 3: + case 3: /* program: $@1 top_compstmt */ #line 1630 "mrbgems/mruby-compiler/core/parse.y" { p->tree = new_scope(p, (yyvsp[0].nd)); NODE_LINENO(p->tree, (yyvsp[0].nd)); } -#line 6115 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6499 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 4: + case 4: /* top_compstmt: top_stmts opt_terms */ #line 1637 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 6123 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6507 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 5: + case 5: /* top_stmts: none */ #line 1643 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_begin(p, 0); } -#line 6131 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6515 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 6: + case 6: /* top_stmts: top_stmt */ #line 1647 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_begin(p, (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 6140 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6524 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 7: + case 7: /* top_stmts: top_stmts terms top_stmt */ #line 1652 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), newline_node((yyvsp[0].nd))); } -#line 6148 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6532 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 8: + case 8: /* top_stmts: error top_stmt */ #line 1656 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_begin(p, 0); } -#line 6156 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6540 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 10: + case 10: /* @2: %empty */ #line 1663 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = local_switch(p); nvars_block(p); } -#line 6165 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6549 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 11: + case 11: /* top_stmt: keyword_BEGIN @2 '{' top_compstmt '}' */ #line 1668 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "BEGIN not supported"); @@ -6172,10 +6556,10 @@ yyreduce: nvars_unnest(p); (yyval.nd) = 0; } -#line 6176 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6560 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 12: + case 12: /* bodystmt: compstmt opt_rescue opt_else opt_ensure */ #line 1680 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[-2].nd)) { @@ -6198,221 +6582,221 @@ yyreduce: } } } -#line 6202 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6586 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 13: + case 13: /* compstmt: stmts opt_terms */ #line 1704 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 6210 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6594 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 14: + case 14: /* stmts: none */ #line 1710 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_begin(p, 0); } -#line 6218 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6602 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 15: + case 15: /* stmts: stmt */ #line 1714 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_begin(p, (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 6227 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6611 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 16: + case 16: /* stmts: stmts terms stmt */ #line 1719 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), newline_node((yyvsp[0].nd))); } -#line 6235 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6619 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 17: + case 17: /* stmts: error stmt */ #line 1723 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_begin(p, (yyvsp[0].nd)); } -#line 6243 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6627 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 18: + case 18: /* $@3: %empty */ #line 1728 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_FNAME;} -#line 6249 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6633 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 19: + case 19: /* stmt: keyword_alias fsym $@3 fsym */ #line 1729 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_alias(p, (yyvsp[-2].id), (yyvsp[0].id)); } -#line 6257 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6641 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 20: + case 20: /* stmt: keyword_undef undef_list */ #line 1733 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 6265 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6649 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 21: + case 21: /* stmt: stmt modifier_if expr_value */ #line 1737 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd), 0); } -#line 6273 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6657 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 22: + case 22: /* stmt: stmt modifier_unless expr_value */ #line 1741 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_unless(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd), 0); } -#line 6281 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6665 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 23: + case 23: /* stmt: stmt modifier_while expr_value */ #line 1745 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_while(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd)); } -#line 6289 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6673 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 24: + case 24: /* stmt: stmt modifier_until expr_value */ #line 1749 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_until(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd)); } -#line 6297 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6681 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 25: + case 25: /* stmt: stmt modifier_rescue stmt */ #line 1753 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6305 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6689 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 26: + case 26: /* stmt: keyword_END '{' compstmt '}' */ #line 1757 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "END not supported"); (yyval.nd) = new_postexe(p, (yyvsp[-1].nd)); } -#line 6314 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6698 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 28: + case 28: /* stmt: mlhs '=' command_call */ #line 1763 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6322 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6706 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 29: + case 29: /* stmt: lhs '=' mrhs */ #line 1767 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), new_array(p, (yyvsp[0].nd))); } -#line 6330 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6714 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 30: + case 30: /* stmt: mlhs '=' arg */ #line 1771 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6338 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6722 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 31: + case 31: /* stmt: mlhs '=' mrhs */ #line 1775 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), new_array(p, (yyvsp[0].nd))); } -#line 6346 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6730 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 32: + case 32: /* stmt: arg "=>" "local variable or method" */ #line 1779 "mrbgems/mruby-compiler/core/parse.y" { node *lhs = new_lvar(p, (yyvsp[0].id)); assignable(p, lhs); (yyval.nd) = new_asgn(p, lhs, (yyvsp[-2].nd)); } -#line 6356 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6740 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 34: + case 34: /* command_asgn: lhs '=' command_rhs */ #line 1788 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6364 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6748 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 35: + case 35: /* command_asgn: var_lhs tOP_ASGN command_rhs */ #line 1792 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, (yyvsp[-2].nd), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6372 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6756 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 36: + case 36: /* command_asgn: primary_value '[' opt_call_args ']' tOP_ASGN command_rhs */ #line 1796 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-5].nd), intern_op(aref), (yyvsp[-3].nd), '.'), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6380 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6764 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 37: + case 37: /* command_asgn: primary_value call_op "local variable or method" tOP_ASGN command_rhs */ #line 1800 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6388 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6772 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 38: + case 38: /* command_asgn: primary_value call_op "constant" tOP_ASGN command_rhs */ #line 1804 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6396 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6780 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 39: + case 39: /* command_asgn: primary_value "::" "constant" tOP_ASGN command_call */ #line 1808 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "constant re-assignment"); (yyval.nd) = 0; } -#line 6405 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6789 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 40: + case 40: /* command_asgn: primary_value "::" "local variable or method" tOP_ASGN command_rhs */ #line 1813 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, tCOLON2), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6413 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6797 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 41: + case 41: /* command_asgn: defn_head f_opt_arglist_paren '=' command */ #line 1817 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-3].nd); @@ -6422,10 +6806,10 @@ yyreduce: nvars_unnest(p); p->in_def--; } -#line 6426 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6810 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 42: + case 42: /* command_asgn: defn_head f_opt_arglist_paren '=' command modifier_rescue arg */ #line 1826 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-5].nd); @@ -6435,10 +6819,10 @@ yyreduce: nvars_unnest(p); p->in_def--; } -#line 6439 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6823 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 43: + case 43: /* command_asgn: defs_head f_opt_arglist_paren '=' command */ #line 1835 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-3].nd); @@ -6448,10 +6832,10 @@ yyreduce: p->in_def--; p->in_single--; } -#line 6452 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6836 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 44: + case 44: /* command_asgn: defs_head f_opt_arglist_paren '=' command modifier_rescue arg */ #line 1844 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-5].nd); @@ -6461,59 +6845,59 @@ yyreduce: p->in_def--; p->in_single--; } -#line 6465 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6849 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 45: + case 45: /* command_asgn: backref tOP_ASGN command_rhs */ #line 1853 "mrbgems/mruby-compiler/core/parse.y" { backref_error(p, (yyvsp[-2].nd)); (yyval.nd) = new_begin(p, 0); } -#line 6474 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6858 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 47: + case 47: /* command_rhs: command_call modifier_rescue stmt */ #line 1861 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6482 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6866 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 50: + case 50: /* expr: expr keyword_and expr */ #line 1870 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6490 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6874 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 51: + case 51: /* expr: expr keyword_or expr */ #line 1874 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6498 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6882 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 52: + case 52: /* expr: keyword_not opt_nl expr */ #line 1878 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); } -#line 6506 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6890 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 53: + case 53: /* expr: '!' command_call */ #line 1882 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); } -#line 6514 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6898 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 55: + case 55: /* defn_head: keyword_def fname */ #line 1890 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_def(p, (yyvsp[0].id), nint(p->cmdarg_stack), local_switch(p)); @@ -6521,18 +6905,18 @@ yyreduce: p->in_def++; nvars_block(p); } -#line 6525 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6909 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 56: + case 56: /* $@4: %empty */ #line 1899 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_FNAME; } -#line 6533 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6917 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 57: + case 57: /* defs_head: keyword_def singleton dot_or_colon $@4 fname */ #line 1903 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_sdef(p, (yyvsp[-3].nd), (yyvsp[0].id), nint(p->cmdarg_stack), local_switch(p)); @@ -6542,10 +6926,10 @@ yyreduce: nvars_block(p); p->lstate = EXPR_ENDFN; /* force for args */ } -#line 6546 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6930 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 58: + case 58: /* expr_value: expr */ #line 1914 "mrbgems/mruby-compiler/core/parse.y" { if (!(yyvsp[0].nd)) (yyval.nd) = new_nil(p); @@ -6553,1042 +6937,1042 @@ yyreduce: (yyval.nd) = (yyvsp[0].nd); } } -#line 6557 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6941 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 62: + case 62: /* block_command: block_call call_op2 operation2 command_args */ #line 1928 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 6565 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6949 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 63: + case 63: /* $@5: %empty */ #line 1934 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); } -#line 6574 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6958 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 64: + case 64: /* cmd_brace_block: "{" $@5 opt_block_param compstmt '}' */ #line 1941 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p, (yyvsp[-2].nd), (yyvsp[-1].nd)); local_unnest(p); nvars_unnest(p); } -#line 6584 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6968 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 65: + case 65: /* command: operation command_args */ #line 1949 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6592 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6976 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 66: + case 66: /* command: operation command_args cmd_brace_block */ #line 1953 "mrbgems/mruby-compiler/core/parse.y" { args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); (yyval.nd) = new_fcall(p, (yyvsp[-2].id), (yyvsp[-1].nd)); } -#line 6601 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6985 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 67: + case 67: /* command: primary_value call_op operation2 command_args */ #line 1958 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 6609 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6993 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 68: + case 68: /* command: primary_value call_op operation2 command_args cmd_brace_block */ #line 1962 "mrbgems/mruby-compiler/core/parse.y" { args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); } -#line 6618 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7002 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 69: + case 69: /* command: primary_value "::" operation2 command_args */ #line 1967 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2); } -#line 6626 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7010 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 70: + case 70: /* command: primary_value "::" operation2 command_args cmd_brace_block */ #line 1971 "mrbgems/mruby-compiler/core/parse.y" { args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), tCOLON2); } -#line 6635 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7019 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 71: + case 71: /* command: keyword_super command_args */ #line 1976 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_super(p, (yyvsp[0].nd)); } -#line 6643 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7027 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 72: + case 72: /* command: keyword_yield command_args */ #line 1980 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_yield(p, (yyvsp[0].nd)); } -#line 6651 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7035 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 73: + case 73: /* command: keyword_return call_args */ #line 1984 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_return(p, ret_args(p, (yyvsp[0].nd))); } -#line 6659 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7043 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 74: + case 74: /* command: keyword_break call_args */ #line 1988 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_break(p, ret_args(p, (yyvsp[0].nd))); } -#line 6667 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7051 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 75: + case 75: /* command: keyword_next call_args */ #line 1992 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_next(p, ret_args(p, (yyvsp[0].nd))); } -#line 6675 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7059 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 76: + case 76: /* mlhs: mlhs_basic */ #line 1998 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 6683 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7067 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 77: + case 77: /* mlhs: tLPAREN mlhs_inner rparen */ #line 2002 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 6691 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7075 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 79: + case 79: /* mlhs_inner: tLPAREN mlhs_inner rparen */ #line 2009 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 6699 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7083 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 80: + case 80: /* mlhs_basic: mlhs_list */ #line 2015 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 6707 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7091 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 81: + case 81: /* mlhs_basic: mlhs_list mlhs_item */ #line 2019 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(push((yyvsp[-1].nd),(yyvsp[0].nd))); } -#line 6715 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7099 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 82: + case 82: /* mlhs_basic: mlhs_list "*" mlhs_node */ #line 2023 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list2((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6723 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7107 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 83: + case 83: /* mlhs_basic: mlhs_list "*" mlhs_node ',' mlhs_post */ #line 2027 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-4].nd), (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6731 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7115 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 84: + case 84: /* mlhs_basic: mlhs_list "*" */ #line 2031 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list2((yyvsp[-1].nd), new_nil(p)); } -#line 6739 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7123 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 85: + case 85: /* mlhs_basic: mlhs_list "*" ',' mlhs_post */ #line 2035 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-3].nd), new_nil(p), (yyvsp[0].nd)); } -#line 6747 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7131 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 86: + case 86: /* mlhs_basic: "*" mlhs_node */ #line 2039 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list2(0, (yyvsp[0].nd)); } -#line 6755 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7139 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 87: + case 87: /* mlhs_basic: "*" mlhs_node ',' mlhs_post */ #line 2043 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6763 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7147 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 88: + case 88: /* mlhs_basic: "*" */ #line 2047 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list2(0, new_nil(p)); } -#line 6771 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7155 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 89: + case 89: /* mlhs_basic: "*" ',' mlhs_post */ #line 2051 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, new_nil(p), (yyvsp[0].nd)); } -#line 6779 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7163 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 91: + case 91: /* mlhs_item: tLPAREN mlhs_inner rparen */ #line 2058 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_masgn(p, (yyvsp[-1].nd), NULL); } -#line 6787 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7171 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 92: + case 92: /* mlhs_list: mlhs_item ',' */ #line 2064 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[-1].nd)); } -#line 6795 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7179 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 93: + case 93: /* mlhs_list: mlhs_list mlhs_item ',' */ #line 2068 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[-1].nd)); } -#line 6803 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7187 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 94: + case 94: /* mlhs_post: mlhs_item */ #line 2074 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 6811 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7195 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 95: + case 95: /* mlhs_post: mlhs_list mlhs_item */ #line 2078 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 6819 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7203 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 96: + case 96: /* mlhs_node: variable */ #line 2084 "mrbgems/mruby-compiler/core/parse.y" { assignable(p, (yyvsp[0].nd)); } -#line 6827 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7211 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 97: + case 97: /* mlhs_node: primary_value '[' opt_call_args ']' */ #line 2088 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.'); } -#line 6835 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7219 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 98: + case 98: /* mlhs_node: primary_value call_op "local variable or method" */ #line 2092 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); } -#line 6843 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7227 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 99: + case 99: /* mlhs_node: primary_value "::" "local variable or method" */ #line 2096 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); } -#line 6851 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7235 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 100: + case 100: /* mlhs_node: primary_value call_op "constant" */ #line 2100 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); } -#line 6859 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7243 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 101: + case 101: /* mlhs_node: primary_value "::" "constant" */ #line 2104 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "dynamic constant assignment"); (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); } -#line 6869 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7253 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 102: + case 102: /* mlhs_node: tCOLON3 "constant" */ #line 2110 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "dynamic constant assignment"); (yyval.nd) = new_colon3(p, (yyvsp[0].id)); } -#line 6879 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7263 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 103: + case 103: /* mlhs_node: backref */ #line 2116 "mrbgems/mruby-compiler/core/parse.y" { backref_error(p, (yyvsp[0].nd)); (yyval.nd) = 0; } -#line 6888 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7272 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 104: + case 104: /* lhs: variable */ #line 2123 "mrbgems/mruby-compiler/core/parse.y" { assignable(p, (yyvsp[0].nd)); } -#line 6896 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7280 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 105: + case 105: /* lhs: primary_value '[' opt_call_args ']' */ #line 2127 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.'); } -#line 6904 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7288 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 106: + case 106: /* lhs: primary_value call_op "local variable or method" */ #line 2131 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); } -#line 6912 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7296 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 107: + case 107: /* lhs: primary_value "::" "local variable or method" */ #line 2135 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); } -#line 6920 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7304 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 108: + case 108: /* lhs: primary_value call_op "constant" */ #line 2139 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); } -#line 6928 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7312 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 109: + case 109: /* lhs: primary_value "::" "constant" */ #line 2143 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "dynamic constant assignment"); (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); } -#line 6938 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7322 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 110: + case 110: /* lhs: tCOLON3 "constant" */ #line 2149 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "dynamic constant assignment"); (yyval.nd) = new_colon3(p, (yyvsp[0].id)); } -#line 6948 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7332 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 111: + case 111: /* lhs: backref */ #line 2155 "mrbgems/mruby-compiler/core/parse.y" { backref_error(p, (yyvsp[0].nd)); (yyval.nd) = 0; } -#line 6957 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7341 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 112: + case 112: /* lhs: "numbered parameter" */ #line 2160 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "can't assign to numbered parameter"); } -#line 6965 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7349 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 113: + case 113: /* cname: "local variable or method" */ #line 2166 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "class/module name must be CONSTANT"); } -#line 6973 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7357 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 115: + case 115: /* cpath: tCOLON3 cname */ #line 2173 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(nint(1), nsym((yyvsp[0].id))); } -#line 6981 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7365 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 116: + case 116: /* cpath: cname */ #line 2177 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(nint(0), nsym((yyvsp[0].id))); } -#line 6989 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7373 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 117: + case 117: /* cpath: primary_value "::" cname */ #line 2181 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[-2].nd)); (yyval.nd) = cons((yyvsp[-2].nd), nsym((yyvsp[0].id))); } -#line 6998 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7382 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 121: + case 121: /* fname: op */ #line 2191 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_ENDFN; (yyval.id) = (yyvsp[0].id); } -#line 7007 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7391 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 122: + case 122: /* fname: reswords */ #line 2196 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_ENDFN; (yyval.id) = (yyvsp[0].id); } -#line 7016 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7400 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 125: + case 125: /* undef_list: fsym */ #line 2207 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_undef(p, (yyvsp[0].id)); } -#line 7024 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7408 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 126: + case 126: /* $@6: %empty */ #line 2210 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_FNAME;} -#line 7030 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7414 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 127: + case 127: /* undef_list: undef_list ',' $@6 fsym */ #line 2211 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-3].nd), nsym((yyvsp[0].id))); } -#line 7038 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7422 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 128: + case 128: /* op: '|' */ #line 2216 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(or); } -#line 7044 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7428 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 129: + case 129: /* op: '^' */ #line 2217 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(xor); } -#line 7050 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7434 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 130: + case 130: /* op: '&' */ #line 2218 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(and); } -#line 7056 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7440 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 131: + case 131: /* op: "<=>" */ #line 2219 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(cmp); } -#line 7062 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7446 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 132: + case 132: /* op: "==" */ #line 2220 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(eq); } -#line 7068 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7452 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 133: + case 133: /* op: "===" */ #line 2221 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(eqq); } -#line 7074 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7458 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 134: + case 134: /* op: "=~" */ #line 2222 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(match); } -#line 7080 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7464 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 135: + case 135: /* op: "!~" */ #line 2223 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(nmatch); } -#line 7086 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7470 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 136: + case 136: /* op: '>' */ #line 2224 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(gt); } -#line 7092 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7476 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 137: + case 137: /* op: ">=" */ #line 2225 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(ge); } -#line 7098 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7482 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 138: + case 138: /* op: '<' */ #line 2226 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(lt); } -#line 7104 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7488 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 139: + case 139: /* op: "<=" */ #line 2227 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(le); } -#line 7110 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7494 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 140: + case 140: /* op: "!=" */ #line 2228 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(neq); } -#line 7116 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7500 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 141: + case 141: /* op: "<<" */ #line 2229 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(lshift); } -#line 7122 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7506 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 142: + case 142: /* op: ">>" */ #line 2230 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(rshift); } -#line 7128 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7512 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 143: + case 143: /* op: '+' */ #line 2231 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(add); } -#line 7134 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7518 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 144: + case 144: /* op: '-' */ #line 2232 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(sub); } -#line 7140 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7524 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 145: + case 145: /* op: '*' */ #line 2233 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(mul); } -#line 7146 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7530 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 146: + case 146: /* op: "*" */ #line 2234 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(mul); } -#line 7152 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7536 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 147: + case 147: /* op: '/' */ #line 2235 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(div); } -#line 7158 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7542 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 148: + case 148: /* op: '%' */ #line 2236 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(mod); } -#line 7164 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7548 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 149: + case 149: /* op: tPOW */ #line 2237 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(pow); } -#line 7170 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7554 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 150: + case 150: /* op: "**" */ #line 2238 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(pow); } -#line 7176 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7560 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 151: + case 151: /* op: '!' */ #line 2239 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(not); } -#line 7182 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7566 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 152: + case 152: /* op: '~' */ #line 2240 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(neg); } -#line 7188 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7572 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 153: + case 153: /* op: "unary plus" */ #line 2241 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(plus); } -#line 7194 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7578 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 154: + case 154: /* op: "unary minus" */ #line 2242 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(minus); } -#line 7200 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7584 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 155: + case 155: /* op: tAREF */ #line 2243 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(aref); } -#line 7206 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7590 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 156: + case 156: /* op: tASET */ #line 2244 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(aset); } -#line 7212 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7596 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 157: + case 157: /* op: '`' */ #line 2245 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(tick); } -#line 7218 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7602 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 198: + case 198: /* arg: lhs '=' arg_rhs */ #line 2263 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7226 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7610 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 199: + case 199: /* arg: var_lhs tOP_ASGN arg_rhs */ #line 2267 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, (yyvsp[-2].nd), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 7234 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7618 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 200: + case 200: /* arg: primary_value '[' opt_call_args ']' tOP_ASGN arg_rhs */ #line 2271 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-5].nd), intern_op(aref), (yyvsp[-3].nd), '.'), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 7242 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7626 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 201: + case 201: /* arg: primary_value call_op "local variable or method" tOP_ASGN arg_rhs */ #line 2275 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 7250 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7634 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 202: + case 202: /* arg: primary_value call_op "constant" tOP_ASGN arg_rhs */ #line 2279 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 7258 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7642 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 203: + case 203: /* arg: primary_value "::" "local variable or method" tOP_ASGN arg_rhs */ #line 2283 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, tCOLON2), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 7266 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7650 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 204: + case 204: /* arg: primary_value "::" "constant" tOP_ASGN arg_rhs */ #line 2287 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "constant re-assignment"); (yyval.nd) = new_begin(p, 0); } -#line 7275 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7659 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 205: + case 205: /* arg: tCOLON3 "constant" tOP_ASGN arg_rhs */ #line 2292 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "constant re-assignment"); (yyval.nd) = new_begin(p, 0); } -#line 7284 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7668 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 206: + case 206: /* arg: backref tOP_ASGN arg_rhs */ #line 2297 "mrbgems/mruby-compiler/core/parse.y" { backref_error(p, (yyvsp[-2].nd)); (yyval.nd) = new_begin(p, 0); } -#line 7293 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7677 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 207: + case 207: /* arg: arg ".." arg */ #line 2302 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dot2(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7301 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7685 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 208: + case 208: /* arg: arg ".." */ #line 2306 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dot2(p, (yyvsp[-1].nd), new_nil(p)); } -#line 7309 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7693 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 209: + case 209: /* arg: tBDOT2 arg */ #line 2310 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dot2(p, new_nil(p), (yyvsp[0].nd)); } -#line 7317 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7701 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 210: + case 210: /* arg: arg "..." arg */ #line 2314 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dot3(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7325 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7709 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 211: + case 211: /* arg: arg "..." */ #line 2318 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dot3(p, (yyvsp[-1].nd), new_nil(p)); } -#line 7333 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7717 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 212: + case 212: /* arg: tBDOT3 arg */ #line 2322 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dot3(p, new_nil(p), (yyvsp[0].nd)); } -#line 7341 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7725 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 213: + case 213: /* arg: arg '+' arg */ #line 2326 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "+", (yyvsp[0].nd)); } -#line 7349 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7733 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 214: + case 214: /* arg: arg '-' arg */ #line 2330 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "-", (yyvsp[0].nd)); } -#line 7357 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7741 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 215: + case 215: /* arg: arg '*' arg */ #line 2334 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "*", (yyvsp[0].nd)); } -#line 7365 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7749 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 216: + case 216: /* arg: arg '/' arg */ #line 2338 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "/", (yyvsp[0].nd)); } -#line 7373 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7757 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 217: + case 217: /* arg: arg '%' arg */ #line 2342 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "%", (yyvsp[0].nd)); } -#line 7381 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7765 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 218: + case 218: /* arg: arg tPOW arg */ #line 2346 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)); } -#line 7389 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7773 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 219: + case 219: /* arg: tUMINUS_NUM "integer literal" tPOW arg */ #line 2350 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_negate(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd))); } -#line 7397 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7781 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 220: + case 220: /* arg: tUMINUS_NUM "float literal" tPOW arg */ #line 2354 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_negate(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd))); } -#line 7405 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7789 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 221: + case 221: /* arg: "unary plus" arg */ #line 2358 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, (yyvsp[0].nd), "+@"); } -#line 7413 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7797 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 222: + case 222: /* arg: "unary minus" arg */ #line 2362 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_negate(p, (yyvsp[0].nd)); } -#line 7421 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7805 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 223: + case 223: /* arg: arg '|' arg */ #line 2366 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "|", (yyvsp[0].nd)); } -#line 7429 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7813 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 224: + case 224: /* arg: arg '^' arg */ #line 2370 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "^", (yyvsp[0].nd)); } -#line 7437 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7821 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 225: + case 225: /* arg: arg '&' arg */ #line 2374 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "&", (yyvsp[0].nd)); } -#line 7445 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7829 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 226: + case 226: /* arg: arg "<=>" arg */ #line 2378 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=>", (yyvsp[0].nd)); } -#line 7453 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7837 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 227: + case 227: /* arg: arg '>' arg */ #line 2382 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">", (yyvsp[0].nd)); } -#line 7461 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7845 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 228: + case 228: /* arg: arg ">=" arg */ #line 2386 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">=", (yyvsp[0].nd)); } -#line 7469 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7853 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 229: + case 229: /* arg: arg '<' arg */ #line 2390 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<", (yyvsp[0].nd)); } -#line 7477 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7861 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 230: + case 230: /* arg: arg "<=" arg */ #line 2394 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=", (yyvsp[0].nd)); } -#line 7485 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7869 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 231: + case 231: /* arg: arg "==" arg */ #line 2398 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "==", (yyvsp[0].nd)); } -#line 7493 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7877 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 232: + case 232: /* arg: arg "===" arg */ #line 2402 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "===", (yyvsp[0].nd)); } -#line 7501 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7885 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 233: + case 233: /* arg: arg "!=" arg */ #line 2406 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!=", (yyvsp[0].nd)); } -#line 7509 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7893 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 234: + case 234: /* arg: arg "=~" arg */ #line 2410 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "=~", (yyvsp[0].nd)); } -#line 7517 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7901 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 235: + case 235: /* arg: arg "!~" arg */ #line 2414 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!~", (yyvsp[0].nd)); } -#line 7525 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7909 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 236: + case 236: /* arg: '!' arg */ #line 2418 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); } -#line 7533 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7917 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 237: + case 237: /* arg: '~' arg */ #line 2422 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "~"); } -#line 7541 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7925 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 238: + case 238: /* arg: arg "<<" arg */ #line 2426 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<<", (yyvsp[0].nd)); } -#line 7549 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7933 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 239: + case 239: /* arg: arg ">>" arg */ #line 2430 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">>", (yyvsp[0].nd)); } -#line 7557 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7941 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 240: + case 240: /* arg: arg "&&" arg */ #line 2434 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7565 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7949 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 241: + case 241: /* arg: arg "||" arg */ #line 2438 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7573 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7957 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 242: + case 242: /* arg: arg '?' arg opt_nl ':' arg */ #line 2442 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd)); } -#line 7581 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7965 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 243: + case 243: /* arg: arg '?' arg opt_nl "label" arg */ #line 2446 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd)); } -#line 7589 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7973 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 244: + case 244: /* arg: defn_head f_opt_arglist_paren '=' arg */ #line 2450 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-3].nd); @@ -7598,10 +7982,10 @@ yyreduce: nvars_unnest(p); p->in_def--; } -#line 7602 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7986 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 245: + case 245: /* arg: defn_head f_opt_arglist_paren '=' arg modifier_rescue arg */ #line 2459 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-5].nd); @@ -7611,10 +7995,10 @@ yyreduce: nvars_unnest(p); p->in_def--; } -#line 7615 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7999 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 246: + case 246: /* arg: defs_head f_opt_arglist_paren '=' arg */ #line 2468 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-3].nd); @@ -7624,10 +8008,10 @@ yyreduce: p->in_def--; p->in_single--; } -#line 7628 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8012 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 247: + case 247: /* arg: defs_head f_opt_arglist_paren '=' arg modifier_rescue arg */ #line 2477 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-5].nd); @@ -7637,69 +8021,69 @@ yyreduce: p->in_def--; p->in_single--; } -#line 7641 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8025 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 248: + case 248: /* arg: primary */ #line 2486 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 7649 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8033 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 250: + case 250: /* aref_args: args trailer */ #line 2493 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7658 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8042 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 251: + case 251: /* aref_args: args comma assocs trailer */ #line 2498 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-3].nd), new_hash(p, (yyvsp[-1].nd))); } -#line 7666 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8050 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 252: + case 252: /* aref_args: assocs trailer */ #line 2502 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(new_kw_hash(p, (yyvsp[-1].nd)), 0); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7675 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8059 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 253: + case 253: /* arg_rhs: arg */ #line 2509 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 7683 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8067 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 254: + case 254: /* arg_rhs: arg modifier_rescue arg */ #line 2513 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[-2].nd)); (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7692 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8076 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 255: + case 255: /* paren_args: '(' opt_call_args ')' */ #line 2520 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 7700 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8084 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 256: + case 256: /* paren_args: '(' args comma tBDOT3 rparen */ #line 2524 "mrbgems/mruby-compiler/core/parse.y" { mrb_sym r = intern_op(mul); @@ -7709,10 +8093,10 @@ yyreduce: new_kw_hash(p, list1(cons(new_kw_rest_args(p, 0), new_lvar(p, k)))), new_block_arg(p, new_lvar(p, b))); } -#line 7713 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8097 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 257: + case 257: /* paren_args: '(' tBDOT3 rparen */ #line 2533 "mrbgems/mruby-compiler/core/parse.y" { mrb_sym r = intern_op(mul); @@ -7728,373 +8112,373 @@ yyreduce: (yyval.nd) = 0; } } -#line 7732 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8116 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 262: + case 262: /* opt_call_args: args comma */ #line 2556 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_callargs(p,(yyvsp[-1].nd),0,0); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7741 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8125 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 263: + case 263: /* opt_call_args: args comma assocs comma */ #line 2561 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_callargs(p,(yyvsp[-3].nd),new_kw_hash(p,(yyvsp[-1].nd)),0); NODE_LINENO((yyval.nd), (yyvsp[-3].nd)); } -#line 7750 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8134 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 264: + case 264: /* opt_call_args: assocs comma */ #line 2566 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_callargs(p,0,new_kw_hash(p,(yyvsp[-1].nd)),0); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7759 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8143 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 265: + case 265: /* call_args: command */ #line 2573 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = new_callargs(p, list1((yyvsp[0].nd)), 0, 0); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 7769 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8153 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 266: + case 266: /* call_args: args opt_block_arg */ #line 2579 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_callargs(p, (yyvsp[-1].nd), 0, (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7778 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8162 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 267: + case 267: /* call_args: assocs opt_block_arg */ #line 2584 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_callargs(p, 0, new_kw_hash(p, (yyvsp[-1].nd)), (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7787 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8171 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 268: + case 268: /* call_args: args comma assocs opt_block_arg */ #line 2589 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_callargs(p, (yyvsp[-3].nd), new_kw_hash(p, (yyvsp[-1].nd)), (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[-3].nd)); } -#line 7796 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8180 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 269: + case 269: /* call_args: block_arg */ #line 2594 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_callargs(p, 0, 0, (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 7805 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8189 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 270: + case 270: /* @7: %empty */ #line 2600 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; CMDARG_PUSH(1); } -#line 7814 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8198 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 271: + case 271: /* command_args: @7 call_args */ #line 2605 "mrbgems/mruby-compiler/core/parse.y" { p->cmdarg_stack = (yyvsp[-1].stack); (yyval.nd) = (yyvsp[0].nd); } -#line 7823 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8207 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 272: + case 272: /* block_arg: "&" arg */ #line 2612 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block_arg(p, (yyvsp[0].nd)); } -#line 7831 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8215 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 273: + case 273: /* block_arg: "&" */ #line 2616 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block_arg(p, 0); } -#line 7839 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8223 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 274: + case 274: /* opt_block_arg: comma block_arg */ #line 2622 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 7847 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8231 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 275: + case 275: /* opt_block_arg: none */ #line 2626 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 7855 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8239 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 277: + case 277: /* args: arg */ #line 2635 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = list1((yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 7865 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8249 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 278: + case 278: /* args: "*" */ #line 2641 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(new_splat(p, new_lvar(p, intern_op(mul)))); } -#line 7873 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8257 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 279: + case 279: /* args: "*" arg */ #line 2645 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(new_splat(p, (yyvsp[0].nd))); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 7882 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8266 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 280: + case 280: /* args: args comma arg */ #line 2650 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7891 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8275 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 281: + case 281: /* args: args comma "*" */ #line 2655 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), new_splat(p, new_lvar(p, intern_op(mul)))); } -#line 7899 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8283 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 282: + case 282: /* args: args comma "*" arg */ #line 2659 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd))); } -#line 7907 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8291 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 283: + case 283: /* mrhs: args comma arg */ #line 2665 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7916 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8300 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 284: + case 284: /* mrhs: args comma "*" arg */ #line 2670 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd))); } -#line 7924 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8308 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 285: + case 285: /* mrhs: "*" arg */ #line 2674 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(new_splat(p, (yyvsp[0].nd))); } -#line 7932 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8316 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 293: + case 293: /* primary: "numbered parameter" */ #line 2687 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_nvar(p, (yyvsp[0].num)); } -#line 7940 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8324 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 294: + case 294: /* primary: "method" */ #line 2691 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, (yyvsp[0].id), 0); } -#line 7948 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8332 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 295: + case 295: /* @8: %empty */ #line 2695 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; p->cmdarg_stack = 0; } -#line 7957 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8341 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 296: + case 296: /* primary: keyword_begin @8 bodystmt keyword_end */ #line 2701 "mrbgems/mruby-compiler/core/parse.y" { p->cmdarg_stack = (yyvsp[-2].stack); (yyval.nd) = (yyvsp[-1].nd); } -#line 7966 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8350 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 297: + case 297: /* @9: %empty */ #line 2706 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; p->cmdarg_stack = 0; } -#line 7975 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8359 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 298: + case 298: /* $@10: %empty */ #line 2710 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_ENDARG;} -#line 7981 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8365 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 299: + case 299: /* primary: "(" @9 stmt $@10 rparen */ #line 2711 "mrbgems/mruby-compiler/core/parse.y" { p->cmdarg_stack = (yyvsp[-3].stack); (yyval.nd) = (yyvsp[-2].nd); } -#line 7990 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8374 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 300: + case 300: /* $@11: %empty */ #line 2715 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_ENDARG;} -#line 7996 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8380 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 301: + case 301: /* primary: "(" $@11 rparen */ #line 2716 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_nil(p); } -#line 8004 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8388 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 302: + case 302: /* primary: tLPAREN compstmt ')' */ #line 2720 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 8012 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8396 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 303: + case 303: /* primary: primary_value "::" "constant" */ #line 2724 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); } -#line 8020 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8404 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 304: + case 304: /* primary: tCOLON3 "constant" */ #line 2728 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_colon3(p, (yyvsp[0].id)); } -#line 8028 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8412 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 305: + case 305: /* primary: "[" aref_args ']' */ #line 2732 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_array(p, (yyvsp[-1].nd)); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 8037 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8421 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 306: + case 306: /* primary: tLBRACE assoc_list '}' */ #line 2737 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_hash(p, (yyvsp[-1].nd)); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 8046 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8430 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 307: + case 307: /* primary: keyword_return */ #line 2742 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_return(p, 0); } -#line 8054 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8438 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 308: + case 308: /* primary: keyword_yield opt_paren_args */ #line 2746 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_yield(p, (yyvsp[0].nd)); } -#line 8062 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8446 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 309: + case 309: /* primary: keyword_not '(' expr rparen */ #line 2750 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[-1].nd)), "!"); } -#line 8070 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8454 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 310: + case 310: /* primary: keyword_not '(' rparen */ #line 2754 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, new_nil(p), "!"); } -#line 8078 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8462 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 311: + case 311: /* primary: operation brace_block */ #line 2758 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, (yyvsp[-1].id), new_callargs(p, 0, 0, (yyvsp[0].nd))); } -#line 8086 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8470 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 313: + case 313: /* primary: method_call brace_block */ #line 2763 "mrbgems/mruby-compiler/core/parse.y" { call_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); (yyval.nd) = (yyvsp[-1].nd); } -#line 8095 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8479 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 314: + case 314: /* @12: %empty */ #line 2768 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); @@ -8102,19 +8486,19 @@ yyreduce: (yyval.num) = p->lpar_beg; p->lpar_beg = ++p->paren_nest; } -#line 8106 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8490 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 315: + case 315: /* @13: %empty */ #line 2775 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; p->cmdarg_stack = 0; } -#line 8115 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8499 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 316: + case 316: /* primary: "->" @12 f_larglist @13 lambda_body */ #line 2780 "mrbgems/mruby-compiler/core/parse.y" { p->lpar_beg = (yyvsp[-3].num); @@ -8124,107 +8508,107 @@ yyreduce: p->cmdarg_stack = (yyvsp[-1].stack); CMDARG_LEXPOP(); } -#line 8128 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8512 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 317: + case 317: /* primary: keyword_if expr_value then compstmt if_tail keyword_end */ #line 2792 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[-4].nd)), (yyvsp[-2].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-5].num)); } -#line 8137 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8521 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 318: + case 318: /* primary: keyword_unless expr_value then compstmt opt_else keyword_end */ #line 2800 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_unless(p, cond((yyvsp[-4].nd)), (yyvsp[-2].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-5].num)); } -#line 8146 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8530 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 319: + case 319: /* $@14: %empty */ #line 2804 "mrbgems/mruby-compiler/core/parse.y" {COND_PUSH(1);} -#line 8152 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8536 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 320: + case 320: /* $@15: %empty */ #line 2804 "mrbgems/mruby-compiler/core/parse.y" {COND_POP();} -#line 8158 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8542 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 321: + case 321: /* primary: keyword_while $@14 expr_value do $@15 compstmt keyword_end */ #line 2807 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_while(p, cond((yyvsp[-4].nd)), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-6].num)); } -#line 8167 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8551 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 322: + case 322: /* $@16: %empty */ #line 2811 "mrbgems/mruby-compiler/core/parse.y" {COND_PUSH(1);} -#line 8173 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8557 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 323: + case 323: /* $@17: %empty */ #line 2811 "mrbgems/mruby-compiler/core/parse.y" {COND_POP();} -#line 8179 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8563 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 324: + case 324: /* primary: keyword_until $@16 expr_value do $@17 compstmt keyword_end */ #line 2814 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_until(p, cond((yyvsp[-4].nd)), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-6].num)); } -#line 8188 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8572 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 325: + case 325: /* primary: keyword_case expr_value opt_terms case_body keyword_end */ #line 2821 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_case(p, (yyvsp[-3].nd), (yyvsp[-1].nd)); } -#line 8196 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8580 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 326: + case 326: /* primary: keyword_case opt_terms case_body keyword_end */ #line 2825 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_case(p, 0, (yyvsp[-1].nd)); } -#line 8204 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8588 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 327: + case 327: /* $@18: %empty */ #line 2829 "mrbgems/mruby-compiler/core/parse.y" {COND_PUSH(1);} -#line 8210 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8594 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 328: + case 328: /* $@19: %empty */ #line 2831 "mrbgems/mruby-compiler/core/parse.y" {COND_POP();} -#line 8216 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8600 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 329: + case 329: /* primary: keyword_for for_var keyword_in $@18 expr_value do $@19 compstmt keyword_end */ #line 2834 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_for(p, (yyvsp[-7].nd), (yyvsp[-4].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-8].num)); } -#line 8225 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8609 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 330: + case 330: /* @20: %empty */ #line 2840 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) @@ -8232,10 +8616,10 @@ yyreduce: (yyval.nd) = local_switch(p); nvars_block(p); } -#line 8236 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8620 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 331: + case 331: /* primary: keyword_class cpath superclass @20 bodystmt keyword_end */ #line 2848 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_class(p, (yyvsp[-4].nd), (yyvsp[-3].nd), (yyvsp[-1].nd)); @@ -8243,29 +8627,29 @@ yyreduce: local_resume(p, (yyvsp[-2].nd)); nvars_unnest(p); } -#line 8247 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8631 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 332: + case 332: /* @21: %empty */ #line 2856 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = p->in_def; p->in_def = 0; } -#line 8256 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8640 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 333: + case 333: /* @22: %empty */ #line 2861 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(local_switch(p), nint(p->in_single)); nvars_block(p); p->in_single = 0; } -#line 8266 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8650 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 334: + case 334: /* primary: keyword_class "<<" expr @21 term @22 bodystmt keyword_end */ #line 2868 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_sclass(p, (yyvsp[-5].nd), (yyvsp[-1].nd)); @@ -8275,10 +8659,10 @@ yyreduce: p->in_def = (yyvsp[-4].num); p->in_single = intn((yyvsp[-2].nd)->cdr); } -#line 8279 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8663 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 335: + case 335: /* @23: %empty */ #line 2878 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) @@ -8286,10 +8670,10 @@ yyreduce: (yyval.nd) = local_switch(p); nvars_block(p); } -#line 8290 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8674 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 336: + case 336: /* primary: keyword_module cpath @23 bodystmt keyword_end */ #line 2886 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_module(p, (yyvsp[-3].nd), (yyvsp[-1].nd)); @@ -8297,10 +8681,10 @@ yyreduce: local_resume(p, (yyvsp[-2].nd)); nvars_unnest(p); } -#line 8301 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8685 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 337: + case 337: /* primary: defn_head f_arglist bodystmt keyword_end */ #line 2896 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-3].nd); @@ -8308,10 +8692,10 @@ yyreduce: nvars_unnest(p); p->in_def--; } -#line 8312 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8696 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 338: + case 338: /* primary: defs_head f_arglist bodystmt keyword_end */ #line 2906 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-3].nd); @@ -8320,450 +8704,450 @@ yyreduce: p->in_def--; p->in_single--; } -#line 8324 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8708 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 339: + case 339: /* primary: keyword_break */ #line 2914 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_break(p, 0); } -#line 8332 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8716 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 340: + case 340: /* primary: keyword_next */ #line 2918 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_next(p, 0); } -#line 8340 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8724 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 341: + case 341: /* primary: keyword_redo */ #line 2922 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_redo(p); } -#line 8348 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8732 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 342: + case 342: /* primary: keyword_retry */ #line 2926 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_retry(p); } -#line 8356 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8740 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 343: + case 343: /* primary_value: primary */ #line 2932 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); if (!(yyval.nd)) (yyval.nd) = new_nil(p); } -#line 8365 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8749 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 350: + case 350: /* if_tail: keyword_elsif expr_value then compstmt if_tail */ #line 2951 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[-3].nd)), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8373 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8757 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 352: + case 352: /* opt_else: keyword_else compstmt */ #line 2958 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8381 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8765 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 353: + case 353: /* for_var: lhs */ #line 2964 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(list1((yyvsp[0].nd))); } -#line 8389 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8773 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 355: + case 355: /* f_margs: f_arg */ #line 2971 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[0].nd),0,0); } -#line 8397 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8781 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 356: + case 356: /* f_margs: f_arg ',' "*" f_norm_arg */ #line 2975 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-3].nd), new_arg(p, (yyvsp[0].id)), 0); } -#line 8405 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8789 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 357: + case 357: /* f_margs: f_arg ',' "*" f_norm_arg ',' f_arg */ #line 2979 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-5].nd), new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd)); } -#line 8413 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8797 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 358: + case 358: /* f_margs: f_arg ',' "*" */ #line 2983 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, intern_op(mul)); (yyval.nd) = list3((yyvsp[-2].nd), nint(-1), 0); } -#line 8422 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8806 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 359: + case 359: /* f_margs: f_arg ',' "*" ',' f_arg */ #line 2988 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-4].nd), nint(-1), (yyvsp[0].nd)); } -#line 8430 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8814 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 360: + case 360: /* f_margs: "*" f_norm_arg */ #line 2992 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, new_arg(p, (yyvsp[0].id)), 0); } -#line 8438 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8822 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 361: + case 361: /* f_margs: "*" f_norm_arg ',' f_arg */ #line 2996 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd)); } -#line 8446 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8830 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 362: + case 362: /* f_margs: "*" */ #line 3000 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, intern_op(mul)); (yyval.nd) = list3(0, nint(-1), 0); } -#line 8455 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8839 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 363: + case 363: /* $@24: %empty */ #line 3005 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, intern_op(mul)); } -#line 8463 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8847 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 364: + case 364: /* f_margs: "*" ',' $@24 f_arg */ #line 3009 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, nint(-1), (yyvsp[0].nd)); } -#line 8471 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8855 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 365: + case 365: /* block_args_tail: f_block_kwarg ',' f_kwrest opt_f_block_arg */ #line 3015 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 8479 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8863 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 366: + case 366: /* block_args_tail: f_block_kwarg opt_f_block_arg */ #line 3019 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); } -#line 8487 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8871 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 367: + case 367: /* block_args_tail: f_kwrest opt_f_block_arg */ #line 3023 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 8495 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8879 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 368: + case 368: /* block_args_tail: f_block_arg */ #line 3027 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); } -#line 8503 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8887 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 369: + case 369: /* opt_block_args_tail: ',' block_args_tail */ #line 3033 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8511 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8895 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 370: + case 370: /* opt_block_args_tail: %empty */ #line 3037 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, 0, 0); } -#line 8519 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8903 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 371: + case 371: /* block_param: f_arg ',' f_block_optarg ',' f_rest_arg opt_block_args_tail */ #line 3043 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 8527 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8911 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 372: + case 372: /* block_param: f_arg ',' f_block_optarg ',' f_rest_arg ',' f_arg opt_block_args_tail */ #line 3047 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8535 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8919 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 373: + case 373: /* block_param: f_arg ',' f_block_optarg opt_block_args_tail */ #line 3051 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } -#line 8543 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8927 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 374: + case 374: /* block_param: f_arg ',' f_block_optarg ',' f_arg opt_block_args_tail */ #line 3055 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8551 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8935 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 375: + case 375: /* block_param: f_arg ',' f_rest_arg opt_block_args_tail */ #line 3059 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 8559 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8943 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 376: + case 376: /* block_param: f_arg ',' opt_block_args_tail */ #line 3063 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-2].nd), 0, 0, 0, (yyvsp[0].nd)); } -#line 8567 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8951 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 377: + case 377: /* block_param: f_arg ',' f_rest_arg ',' f_arg opt_block_args_tail */ #line 3067 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8575 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8959 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 378: + case 378: /* block_param: f_arg opt_block_args_tail */ #line 3071 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); } -#line 8583 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8967 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 379: + case 379: /* block_param: f_block_optarg ',' f_rest_arg opt_block_args_tail */ #line 3075 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 8591 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8975 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 380: + case 380: /* block_param: f_block_optarg ',' f_rest_arg ',' f_arg opt_block_args_tail */ #line 3079 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8599 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8983 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 381: + case 381: /* block_param: f_block_optarg opt_block_args_tail */ #line 3083 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } -#line 8607 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8991 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 382: + case 382: /* block_param: f_block_optarg ',' f_arg opt_block_args_tail */ #line 3087 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8615 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8999 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 383: + case 383: /* block_param: f_rest_arg opt_block_args_tail */ #line 3091 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 8623 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9007 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 384: + case 384: /* block_param: f_rest_arg ',' f_arg opt_block_args_tail */ #line 3095 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8631 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9015 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 385: + case 385: /* block_param: block_args_tail */ #line 3099 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); } -#line 8639 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9023 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 386: + case 386: /* opt_block_param: none */ #line 3105 "mrbgems/mruby-compiler/core/parse.y" { local_add_blk(p, 0); (yyval.nd) = 0; } -#line 8648 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9032 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 387: + case 387: /* opt_block_param: block_param_def */ #line 3110 "mrbgems/mruby-compiler/core/parse.y" { p->cmd_start = TRUE; (yyval.nd) = (yyvsp[0].nd); } -#line 8657 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9041 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 388: + case 388: /* $@25: %empty */ #line 3116 "mrbgems/mruby-compiler/core/parse.y" {local_add_blk(p, 0);} -#line 8663 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9047 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 389: + case 389: /* block_param_def: '|' $@25 opt_bv_decl '|' */ #line 3117 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 8671 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9055 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 390: + case 390: /* block_param_def: "||" */ #line 3121 "mrbgems/mruby-compiler/core/parse.y" { local_add_blk(p, 0); (yyval.nd) = 0; } -#line 8680 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9064 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 391: + case 391: /* block_param_def: '|' block_param opt_bv_decl '|' */ #line 3126 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-2].nd); } -#line 8688 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9072 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 392: + case 392: /* opt_bv_decl: opt_nl */ #line 3133 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 8696 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9080 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 393: + case 393: /* opt_bv_decl: opt_nl ';' bv_decls opt_nl */ #line 3137 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 8704 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9088 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 396: + case 396: /* bvar: "local variable or method" */ #line 3147 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); new_bv(p, (yyvsp[0].id)); } -#line 8713 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9097 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 398: + case 398: /* f_larglist: '(' f_args opt_bv_decl ')' */ #line 3155 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-2].nd); } -#line 8721 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9105 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 399: + case 399: /* f_larglist: f_args */ #line 3159 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8729 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9113 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 400: + case 400: /* lambda_body: tLAMBEG compstmt '}' */ #line 3165 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 8737 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9121 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 401: + case 401: /* lambda_body: keyword_do_LAMBDA bodystmt keyword_end */ #line 3169 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 8745 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9129 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 402: + case 402: /* $@26: %empty */ #line 3175 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); } -#line 8754 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9138 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 403: + case 403: /* do_block: keyword_do_block $@26 opt_block_param bodystmt keyword_end */ #line 3182 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); local_unnest(p); nvars_unnest(p); } -#line 8764 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9148 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 404: + case 404: /* block_call: command do_block */ #line 3190 "mrbgems/mruby-compiler/core/parse.y" { if (typen((yyvsp[-1].nd)->car) == NODE_YIELD) { @@ -8774,118 +9158,118 @@ yyreduce: } (yyval.nd) = (yyvsp[-1].nd); } -#line 8778 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9162 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 405: + case 405: /* block_call: block_call call_op2 operation2 opt_paren_args */ #line 3200 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 8786 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9170 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 406: + case 406: /* block_call: block_call call_op2 operation2 opt_paren_args brace_block */ #line 3204 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); call_with_block(p, (yyval.nd), (yyvsp[0].nd)); } -#line 8795 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9179 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 407: + case 407: /* block_call: block_call call_op2 operation2 command_args do_block */ #line 3209 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); call_with_block(p, (yyval.nd), (yyvsp[0].nd)); } -#line 8804 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9188 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 408: + case 408: /* method_call: operation paren_args */ #line 3216 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 8812 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9196 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 409: + case 409: /* method_call: primary_value call_op operation2 opt_paren_args */ #line 3220 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 8820 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9204 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 410: + case 410: /* method_call: primary_value "::" operation2 paren_args */ #line 3224 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2); } -#line 8828 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9212 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 411: + case 411: /* method_call: primary_value "::" operation3 */ #line 3228 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); } -#line 8836 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9220 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 412: + case 412: /* method_call: primary_value call_op paren_args */ #line 3232 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), (yyvsp[-1].num)); } -#line 8844 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9228 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 413: + case 413: /* method_call: primary_value "::" paren_args */ #line 3236 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), tCOLON2); } -#line 8852 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9236 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 414: + case 414: /* method_call: keyword_super paren_args */ #line 3240 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_super(p, (yyvsp[0].nd)); } -#line 8860 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9244 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 415: + case 415: /* method_call: keyword_super */ #line 3244 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_zsuper(p); } -#line 8868 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9252 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 416: + case 416: /* method_call: primary_value '[' opt_call_args ']' */ #line 3248 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.'); } -#line 8876 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9260 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 417: + case 417: /* @27: %empty */ #line 3254 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); (yyval.num) = p->lineno; } -#line 8886 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9270 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 418: + case 418: /* brace_block: '{' @27 opt_block_param compstmt '}' */ #line 3261 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); @@ -8893,20 +9277,20 @@ yyreduce: local_unnest(p); nvars_unnest(p); } -#line 8897 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9281 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 419: + case 419: /* @28: %empty */ #line 3268 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); (yyval.num) = p->lineno; } -#line 8907 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9291 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 420: + case 420: /* brace_block: keyword_do @28 opt_block_param bodystmt keyword_end */ #line 3275 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); @@ -8914,18 +9298,18 @@ yyreduce: local_unnest(p); nvars_unnest(p); } -#line 8918 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9302 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 421: + case 421: /* case_body: keyword_when args then compstmt cases */ #line 3286 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(cons((yyvsp[-3].nd), (yyvsp[-1].nd)), (yyvsp[0].nd)); } -#line 8926 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9310 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 422: + case 422: /* cases: opt_else */ #line 3292 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[0].nd)) { @@ -8935,59 +9319,59 @@ yyreduce: (yyval.nd) = 0; } } -#line 8939 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9323 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 424: + case 424: /* opt_rescue: keyword_rescue exc_list exc_var then compstmt opt_rescue */ #line 3306 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(list3((yyvsp[-4].nd), (yyvsp[-3].nd), (yyvsp[-1].nd))); if ((yyvsp[0].nd)) (yyval.nd) = append((yyval.nd), (yyvsp[0].nd)); } -#line 8948 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9332 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 426: + case 426: /* exc_list: arg */ #line 3314 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 8956 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9340 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 429: + case 429: /* exc_var: "=>" lhs */ #line 3322 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8964 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9348 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 431: + case 431: /* opt_ensure: keyword_ensure compstmt */ #line 3329 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8972 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9356 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 438: + case 438: /* string: string string_fragment */ #line 3343 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = concat_string(p, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8980 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9364 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 441: + case 441: /* string_fragment: "string literal" tSTRING */ #line 3351 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8988 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9372 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 442: + case 442: /* string_fragment: "string literal" string_rep tSTRING */ #line 3355 "mrbgems/mruby-compiler/core/parse.y" { node *n = (yyvsp[-1].nd); @@ -8999,67 +9383,67 @@ yyreduce: } (yyval.nd) = new_dstr(p, n); } -#line 9003 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9387 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 444: + case 444: /* string_rep: string_rep string_interp */ #line 3369 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = append((yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9011 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9395 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 445: + case 445: /* string_interp: tSTRING_MID */ #line 3375 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9019 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9403 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 446: + case 446: /* @29: %empty */ #line 3379 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push_strterm(p); } -#line 9027 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9411 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 447: + case 447: /* string_interp: tSTRING_PART @29 compstmt '}' */ #line 3384 "mrbgems/mruby-compiler/core/parse.y" { pop_strterm(p,(yyvsp[-2].nd)); (yyval.nd) = list2((yyvsp[-3].nd), (yyvsp[-1].nd)); } -#line 9036 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9420 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 448: + case 448: /* string_interp: tLITERAL_DELIM */ #line 3389 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(new_literal_delim(p)); } -#line 9044 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9428 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 449: + case 449: /* string_interp: tHD_LITERAL_DELIM heredoc_bodies */ #line 3393 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(new_literal_delim(p)); } -#line 9052 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9436 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 450: + case 450: /* xstring: tXSTRING_BEG tXSTRING */ #line 3399 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 9060 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9444 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 451: + case 451: /* xstring: tXSTRING_BEG string_rep tXSTRING */ #line 3403 "mrbgems/mruby-compiler/core/parse.y" { node *n = (yyvsp[-1].nd); @@ -9071,80 +9455,80 @@ yyreduce: } (yyval.nd) = new_dxstr(p, n); } -#line 9075 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9459 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 452: + case 452: /* regexp: tREGEXP_BEG tREGEXP */ #line 3416 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 9083 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9467 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 453: + case 453: /* regexp: tREGEXP_BEG string_rep tREGEXP */ #line 3420 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dregx(p, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9091 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9475 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 457: + case 457: /* heredoc_body: tHEREDOC_END */ #line 3433 "mrbgems/mruby-compiler/core/parse.y" { parser_heredoc_info *info = parsing_heredoc_info(p); info->doc = push(info->doc, new_str(p, "", 0)); heredoc_end(p); } -#line 9101 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9485 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 458: + case 458: /* heredoc_body: heredoc_string_rep tHEREDOC_END */ #line 3439 "mrbgems/mruby-compiler/core/parse.y" { heredoc_end(p); } -#line 9109 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9493 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 461: + case 461: /* heredoc_string_interp: tHD_STRING_MID */ #line 3449 "mrbgems/mruby-compiler/core/parse.y" { parser_heredoc_info *info = parsing_heredoc_info(p); info->doc = push(info->doc, (yyvsp[0].nd)); heredoc_treat_nextline(p); } -#line 9119 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9503 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 462: + case 462: /* @30: %empty */ #line 3455 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push_strterm(p); } -#line 9127 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9511 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 463: + case 463: /* heredoc_string_interp: tHD_STRING_PART @30 compstmt '}' */ #line 3460 "mrbgems/mruby-compiler/core/parse.y" { pop_strterm(p, (yyvsp[-2].nd)); parser_heredoc_info *info = parsing_heredoc_info(p); info->doc = push(push(info->doc, (yyvsp[-3].nd)), (yyvsp[-1].nd)); } -#line 9137 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9521 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 464: + case 464: /* words: tWORDS_BEG tSTRING */ #line 3468 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_words(p, list1((yyvsp[0].nd))); } -#line 9145 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9529 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 465: + case 465: /* words: tWORDS_BEG string_rep tSTRING */ #line 3472 "mrbgems/mruby-compiler/core/parse.y" { node *n = (yyvsp[-1].nd); @@ -9156,19 +9540,19 @@ yyreduce: } (yyval.nd) = new_words(p, n); } -#line 9160 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9544 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 466: + case 466: /* symbol: basic_symbol */ #line 3486 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_ENDARG; (yyval.nd) = new_sym(p, (yyvsp[0].id)); } -#line 9169 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9553 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 467: + case 467: /* symbol: "symbol" "string literal" string_rep tSTRING */ #line 3491 "mrbgems/mruby-compiler/core/parse.y" { node *n = (yyvsp[-1].nd); @@ -9181,42 +9565,42 @@ yyreduce: } (yyval.nd) = new_dsym(p, new_dstr(p, n)); } -#line 9185 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9569 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 468: + case 468: /* basic_symbol: "symbol" sym */ #line 3505 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = (yyvsp[0].id); } -#line 9193 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9577 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 473: + case 473: /* sym: tSTRING */ #line 3515 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = new_strsym(p, (yyvsp[0].nd)); } -#line 9201 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9585 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 474: + case 474: /* sym: "string literal" tSTRING */ #line 3519 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = new_strsym(p, (yyvsp[0].nd)); } -#line 9209 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9593 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 475: + case 475: /* symbols: tSYMBOLS_BEG tSTRING */ #line 3525 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_symbols(p, list1((yyvsp[0].nd))); } -#line 9217 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9601 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 476: + case 476: /* symbols: tSYMBOLS_BEG string_rep tSTRING */ #line 3529 "mrbgems/mruby-compiler/core/parse.y" { node *n = (yyvsp[-1].nd); @@ -9225,122 +9609,122 @@ yyreduce: } (yyval.nd) = new_symbols(p, n); } -#line 9229 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9613 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 479: + case 479: /* numeric: tUMINUS_NUM "integer literal" */ #line 3541 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_negate(p, (yyvsp[0].nd)); } -#line 9237 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9621 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 480: + case 480: /* numeric: tUMINUS_NUM "float literal" */ #line 3545 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_negate(p, (yyvsp[0].nd)); } -#line 9245 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9629 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 481: + case 481: /* variable: "local variable or method" */ #line 3551 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_lvar(p, (yyvsp[0].id)); } -#line 9253 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9637 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 482: + case 482: /* variable: "instance variable" */ #line 3555 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_ivar(p, (yyvsp[0].id)); } -#line 9261 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9645 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 483: + case 483: /* variable: "global variable" */ #line 3559 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_gvar(p, (yyvsp[0].id)); } -#line 9269 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9653 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 484: + case 484: /* variable: "class variable" */ #line 3563 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_cvar(p, (yyvsp[0].id)); } -#line 9277 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9661 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 485: + case 485: /* variable: "constant" */ #line 3567 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_const(p, (yyvsp[0].id)); } -#line 9285 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9669 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 486: + case 486: /* var_lhs: variable */ #line 3573 "mrbgems/mruby-compiler/core/parse.y" { assignable(p, (yyvsp[0].nd)); } -#line 9293 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9677 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 487: + case 487: /* var_lhs: "numbered parameter" */ #line 3577 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "can't assign to numbered parameter"); } -#line 9301 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9685 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 488: + case 488: /* var_ref: variable */ #line 3583 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = var_reference(p, (yyvsp[0].nd)); } -#line 9309 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9693 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 489: + case 489: /* var_ref: keyword_nil */ #line 3587 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_nil(p); } -#line 9317 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9701 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 490: + case 490: /* var_ref: keyword_self */ #line 3591 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_self(p); } -#line 9325 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9709 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 491: + case 491: /* var_ref: keyword_true */ #line 3595 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_true(p); } -#line 9333 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9717 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 492: + case 492: /* var_ref: keyword_false */ #line 3599 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_false(p); } -#line 9341 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9725 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 493: + case 493: /* var_ref: keyword__FILE__ */ #line 3603 "mrbgems/mruby-compiler/core/parse.y" { const char *fn = mrb_sym_name_len(p->mrb, p->filename_sym, NULL); @@ -9349,10 +9733,10 @@ yyreduce: } (yyval.nd) = new_str(p, fn, strlen(fn)); } -#line 9353 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9737 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 494: + case 494: /* var_ref: keyword__LINE__ */ #line 3611 "mrbgems/mruby-compiler/core/parse.y" { char buf[16]; @@ -9360,595 +9744,595 @@ yyreduce: dump_int(p->lineno, buf); (yyval.nd) = new_int(p, buf, 10, 0); } -#line 9364 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9748 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 495: + case 495: /* var_ref: keyword__ENCODING__ */ #line 3618 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, MRB_SYM_2(p->mrb, __ENCODING__), 0); } -#line 9372 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9756 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 498: + case 498: /* superclass: %empty */ #line 3628 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 9380 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9764 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 499: + case 499: /* $@31: %empty */ #line 3632 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_BEG; p->cmd_start = TRUE; } -#line 9389 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9773 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 500: + case 500: /* superclass: '<' $@31 expr_value term */ #line 3637 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 9397 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9781 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 503: + case 503: /* f_arglist_paren: '(' f_args rparen */ #line 3653 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); p->lstate = EXPR_BEG; p->cmd_start = TRUE; } -#line 9407 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9791 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 504: + case 504: /* f_arglist_paren: '(' f_arg ',' tBDOT3 rparen */ #line 3659 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_dots(p, (yyvsp[-3].nd)); } -#line 9415 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9799 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 505: + case 505: /* f_arglist_paren: '(' tBDOT3 rparen */ #line 3663 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_dots(p, 0); } -#line 9423 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9807 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 507: + case 507: /* f_arglist: f_args term */ #line 3670 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 9431 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9815 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 508: + case 508: /* f_arglist: f_arg ',' tBDOT3 term */ #line 3674 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_dots(p, (yyvsp[-3].nd)); } -#line 9439 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9823 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 509: + case 509: /* f_arglist: "..." term */ #line 3678 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_dots(p, 0); } -#line 9447 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9831 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 510: + case 510: /* f_label: "local variable or method" "label" */ #line 3684 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); } -#line 9455 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9839 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 511: + case 511: /* f_label: "numbered parameter" "label" */ #line 3688 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); } -#line 9463 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9847 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 512: + case 512: /* f_kw: f_label arg */ #line 3694 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 9473 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9857 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 513: + case 513: /* f_kw: f_label */ #line 3700 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); local_unnest(p); } -#line 9482 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9866 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 514: + case 514: /* f_block_kw: f_label primary_value */ #line 3707 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 9492 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9876 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 515: + case 515: /* f_block_kw: f_label */ #line 3713 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); local_unnest(p); } -#line 9501 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9885 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 516: + case 516: /* f_block_kwarg: f_block_kw */ #line 3720 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9509 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9893 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 517: + case 517: /* f_block_kwarg: f_block_kwarg ',' f_block_kw */ #line 3724 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9517 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9901 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 518: + case 518: /* f_kwarg: f_kw */ #line 3730 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9525 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9909 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 519: + case 519: /* f_kwarg: f_kwarg ',' f_kw */ #line 3734 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9533 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9917 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 522: + case 522: /* f_kwrest: kwrest_mark "local variable or method" */ #line 3744 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_kw_rest_args(p, (yyvsp[0].id)); } -#line 9541 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9925 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 523: + case 523: /* f_kwrest: kwrest_mark */ #line 3748 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_kw_rest_args(p, 0); } -#line 9549 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9933 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 524: + case 524: /* args_tail: f_kwarg ',' f_kwrest opt_f_block_arg */ #line 3754 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 9557 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9941 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 525: + case 525: /* args_tail: f_kwarg opt_f_block_arg */ #line 3758 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); } -#line 9565 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9949 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 526: + case 526: /* args_tail: f_kwrest opt_f_block_arg */ #line 3762 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 9573 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9957 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 527: + case 527: /* args_tail: f_block_arg */ #line 3766 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); } -#line 9581 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9965 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 528: + case 528: /* opt_args_tail: ',' args_tail */ #line 3772 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 9589 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9973 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 529: + case 529: /* opt_args_tail: %empty */ #line 3776 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, 0, 0); } -#line 9597 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9981 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 530: + case 530: /* f_args: f_arg ',' f_optarg ',' f_rest_arg opt_args_tail */ #line 3782 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 9605 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9989 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 531: + case 531: /* f_args: f_arg ',' f_optarg ',' f_rest_arg ',' f_arg opt_args_tail */ #line 3786 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9613 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9997 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 532: + case 532: /* f_args: f_arg ',' f_optarg opt_args_tail */ #line 3790 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } -#line 9621 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10005 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 533: + case 533: /* f_args: f_arg ',' f_optarg ',' f_arg opt_args_tail */ #line 3794 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9629 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10013 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 534: + case 534: /* f_args: f_arg ',' f_rest_arg opt_args_tail */ #line 3798 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 9637 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10021 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 535: + case 535: /* f_args: f_arg ',' f_rest_arg ',' f_arg opt_args_tail */ #line 3802 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9645 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10029 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 536: + case 536: /* f_args: f_arg opt_args_tail */ #line 3806 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); } -#line 9653 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10037 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 537: + case 537: /* f_args: f_optarg ',' f_rest_arg opt_args_tail */ #line 3810 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 9661 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10045 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 538: + case 538: /* f_args: f_optarg ',' f_rest_arg ',' f_arg opt_args_tail */ #line 3814 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9669 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10053 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 539: + case 539: /* f_args: f_optarg opt_args_tail */ #line 3818 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } -#line 9677 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10061 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 540: + case 540: /* f_args: f_optarg ',' f_arg opt_args_tail */ #line 3822 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9685 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10069 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 541: + case 541: /* f_args: f_rest_arg opt_args_tail */ #line 3826 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 9693 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10077 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 542: + case 542: /* f_args: f_rest_arg ',' f_arg opt_args_tail */ #line 3830 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9701 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10085 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 543: + case 543: /* f_args: args_tail */ #line 3834 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); } -#line 9709 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10093 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 544: + case 544: /* f_args: %empty */ #line 3838 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, 0); (yyval.nd) = new_args(p, 0, 0, 0, 0, 0); } -#line 9718 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10102 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 545: + case 545: /* f_bad_arg: "constant" */ #line 3845 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a constant"); (yyval.nd) = 0; } -#line 9727 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10111 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 546: + case 546: /* f_bad_arg: "instance variable" */ #line 3850 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be an instance variable"); (yyval.nd) = 0; } -#line 9736 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10120 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 547: + case 547: /* f_bad_arg: "global variable" */ #line 3855 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a global variable"); (yyval.nd) = 0; } -#line 9745 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10129 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 548: + case 548: /* f_bad_arg: "class variable" */ #line 3860 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a class variable"); (yyval.nd) = 0; } -#line 9754 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10138 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 549: + case 549: /* f_bad_arg: "numbered parameter" */ #line 3865 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a numbered parameter"); (yyval.nd) = 0; } -#line 9763 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10147 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 550: + case 550: /* f_norm_arg: f_bad_arg */ #line 3872 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = 0; } -#line 9771 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10155 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 551: + case 551: /* f_norm_arg: "local variable or method" */ #line 3876 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); (yyval.id) = (yyvsp[0].id); } -#line 9780 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10164 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 552: + case 552: /* f_arg_item: f_norm_arg */ #line 3883 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_arg(p, (yyvsp[0].id)); } -#line 9788 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10172 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 553: + case 553: /* @32: %empty */ #line 3887 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = local_switch(p); } -#line 9796 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10180 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 554: + case 554: /* f_arg_item: tLPAREN @32 f_margs rparen */ #line 3891 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_masgn_param(p, (yyvsp[-1].nd), p->locals->car); local_resume(p, (yyvsp[-2].nd)); local_add_f(p, 0); } -#line 9806 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10190 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 555: + case 555: /* f_arg: f_arg_item */ #line 3899 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9814 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10198 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 556: + case 556: /* f_arg: f_arg ',' f_arg_item */ #line 3903 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9822 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10206 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 557: + case 557: /* f_opt_asgn: "local variable or method" '=' */ #line 3909 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[-1].id)); local_nest(p); (yyval.id) = (yyvsp[-1].id); } -#line 9832 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10216 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 558: + case 558: /* f_opt: f_opt_asgn arg */ #line 3917 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 9842 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10226 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 559: + case 559: /* f_block_opt: f_opt_asgn primary_value */ #line 3925 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 9852 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10236 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 560: + case 560: /* f_block_optarg: f_block_opt */ #line 3933 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9860 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10244 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 561: + case 561: /* f_block_optarg: f_block_optarg ',' f_block_opt */ #line 3937 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9868 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10252 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 562: + case 562: /* f_optarg: f_opt */ #line 3943 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9876 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10260 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 563: + case 563: /* f_optarg: f_optarg ',' f_opt */ #line 3947 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9884 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10268 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 566: + case 566: /* f_rest_arg: restarg_mark "local variable or method" */ #line 3957 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); (yyval.id) = (yyvsp[0].id); } -#line 9893 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10277 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 567: + case 567: /* f_rest_arg: restarg_mark */ #line 3962 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(mul); local_add_f(p, (yyval.id)); } -#line 9902 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10286 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 570: + case 570: /* f_block_arg: blkarg_mark "local variable or method" */ #line 3973 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = (yyvsp[0].id); } -#line 9910 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10294 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 571: + case 571: /* f_block_arg: blkarg_mark */ #line 3977 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(and); } -#line 9918 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10302 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 572: + case 572: /* opt_f_block_arg: ',' f_block_arg */ #line 3983 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = (yyvsp[0].id); } -#line 9926 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10310 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 573: + case 573: /* opt_f_block_arg: none */ #line 3987 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = 0; } -#line 9934 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10318 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 574: + case 574: /* singleton: var_ref */ #line 3993 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); if (!(yyval.nd)) (yyval.nd) = new_nil(p); } -#line 9943 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10327 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 575: + case 575: /* $@33: %empty */ #line 3997 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_BEG;} -#line 9949 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10333 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 576: + case 576: /* singleton: '(' $@33 expr rparen */ #line 3998 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[-1].nd) == 0) { @@ -9972,80 +10356,80 @@ yyreduce: } (yyval.nd) = (yyvsp[-1].nd); } -#line 9976 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10360 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 578: + case 578: /* assoc_list: assocs trailer */ #line 4024 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 9984 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10368 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 579: + case 579: /* assocs: assoc */ #line 4030 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 9993 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10377 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 580: + case 580: /* assocs: assocs comma assoc */ #line 4035 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 10001 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10385 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 581: + case 581: /* assoc: arg "=>" arg */ #line 4041 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[-2].nd)); void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 10011 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10395 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 582: + case 582: /* assoc: "local variable or method" "label" arg */ #line 4047 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(new_sym(p, (yyvsp[-2].id)), (yyvsp[0].nd)); } -#line 10020 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10404 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 583: + case 583: /* assoc: "local variable or method" "label" */ #line 4052 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(new_sym(p, (yyvsp[-1].id)), label_reference(p, (yyvsp[-1].id))); } -#line 10028 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10412 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 584: + case 584: /* assoc: "numbered parameter" "label" */ #line 4056 "mrbgems/mruby-compiler/core/parse.y" { mrb_sym sym = intern_numparam((yyvsp[-1].num)); (yyval.nd) = cons(new_sym(p, sym), label_reference(p, sym)); } -#line 10037 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10421 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 585: + case 585: /* assoc: "numbered parameter" "label" arg */ #line 4061 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(new_sym(p, intern_numparam((yyvsp[-2].num))), (yyvsp[0].nd)); } -#line 10046 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10430 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 586: + case 586: /* assoc: string_fragment "label" arg */ #line 4066 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); @@ -10056,75 +10440,75 @@ yyreduce: (yyval.nd) = cons(new_sym(p, new_strsym(p, (yyvsp[-2].nd))), (yyvsp[0].nd)); } } -#line 10060 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10444 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 587: + case 587: /* assoc: "**" arg */ #line 4076 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(new_kw_rest_args(p, 0), (yyvsp[0].nd)); } -#line 10069 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10453 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 588: + case 588: /* assoc: "**" */ #line 4081 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(new_kw_rest_args(p, 0), new_lvar(p, intern_op(pow))); } -#line 10077 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10461 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 601: + case 601: /* call_op: '.' */ #line 4107 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = '.'; } -#line 10085 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10469 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 602: + case 602: /* call_op: "&." */ #line 4111 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = 0; } -#line 10093 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10477 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 604: + case 604: /* call_op2: "::" */ #line 4118 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = tCOLON2; } -#line 10101 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10485 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 613: + case 613: /* term: ';' */ #line 4139 "mrbgems/mruby-compiler/core/parse.y" {yyerrok;} -#line 10107 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10491 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 615: + case 615: /* nl: '\n' */ #line 4144 "mrbgems/mruby-compiler/core/parse.y" { p->lineno += (yyvsp[0].num); p->column = 0; } -#line 10116 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10500 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 619: + case 619: /* none: %empty */ #line 4156 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 10124 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10508 "mrbgems/mruby-compiler/core/y.tab.c" break; -#line 10128 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10512 "mrbgems/mruby-compiler/core/y.tab.c" default: break; } @@ -10139,11 +10523,10 @@ yyreduce: case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; - YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; @@ -10167,50 +10550,44 @@ yyreduce: yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - + yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (p, YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) { + yypcontext_t yyctx + = {yyssp, yytoken}; char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; + yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx); if (yysyntax_error_status == 0) yymsgp = yymsg; - else if (yysyntax_error_status == 1) + else if (yysyntax_error_status == -1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); - yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); - if (!yymsg) + yymsg = YY_CAST (char *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); + if (yymsg) { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; + yysyntax_error_status + = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx); + yymsgp = yymsg; } else { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = YYENOMEM; } } yyerror (p, yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; + if (yysyntax_error_status == YYENOMEM) + YYNOMEM; } -# undef YYSYNTAX_ERROR -#endif } - - if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an @@ -10243,6 +10620,7 @@ yyerrorlab: label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; + ++yynerrs; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -10259,13 +10637,14 @@ yyerrorlab: yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ + /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) { yyn = yytable[yyn]; if (0 < yyn) @@ -10279,7 +10658,7 @@ yyerrlab1: yydestruct ("Error: popping", - yystos[yystate], yyvsp, p); + YY_ACCESSING_SYMBOL (yystate), yyvsp, p); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -10291,7 +10670,7 @@ yyerrlab1: /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); yystate = yyn; goto yynewstate; @@ -10302,7 +10681,7 @@ yyerrlab1: `-------------------------------------*/ yyacceptlab: yyresult = 0; - goto yyreturn; + goto yyreturnlab; /*-----------------------------------. @@ -10310,24 +10689,22 @@ yyacceptlab: `-----------------------------------*/ yyabortlab: yyresult = 1; - goto yyreturn; + goto yyreturnlab; -#if !defined yyoverflow || YYERROR_VERBOSE -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ yyexhaustedlab: yyerror (p, YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ -#endif + goto yyreturnlab; -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ -yyreturn: +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at @@ -10343,19 +10720,18 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[+*yyssp], yyvsp, p); + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, p); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif -#if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); -#endif return yyresult; } + #line 4160 "mrbgems/mruby-compiler/core/parse.y" #define pylval (*((YYSTYPE*)(p->ylval))) @@ -12827,7 +13203,6 @@ parser_update_cxt(parser_state *p, mrbc_context *cxt) } } -void mrb_codedump_all(mrb_state*, struct RProc*); void mrb_parser_dump(mrb_state *mrb, node *tree, int offset); MRB_API void diff --git a/mrbgems/mruby-eval/src/eval.c b/mrbgems/mruby-eval/src/eval.c index 3e430dbcb..19145300e 100644 --- a/mrbgems/mruby-eval/src/eval.c +++ b/mrbgems/mruby-eval/src/eval.c @@ -9,9 +9,6 @@ #include #include -struct REnv *mrb_env_new(mrb_state *mrb, struct mrb_context *c, mrb_callinfo *ci, int nstacks, mrb_value *stack, struct RClass *tc); -void mrb_codedump_all(mrb_state*, struct RProc*); - static struct RProc* create_proc_from_string(mrb_state *mrb, const char *s, mrb_int len, mrb_value binding, const char *file, mrb_int line) { diff --git a/src/codedump.c b/src/codedump.c index 9aba7cd6c..1d19354f5 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -9,85 +9,85 @@ #ifndef MRB_NO_STDIO static void -print_r(mrb_state *mrb, const mrb_irep *irep, size_t n) +print_r(mrb_state *mrb, const mrb_irep *irep, size_t n, FILE *out) { if (n == 0) return; if (n >= irep->nlocals) return; if (!irep->lv[n-1]) return; - printf(" R%d:%s", (int)n, mrb_sym_dump(mrb, irep->lv[n-1])); + fprintf(out, " R%d:%s", (int)n, mrb_sym_dump(mrb, irep->lv[n-1])); } static void -print_lv_a(mrb_state *mrb, const mrb_irep *irep, uint16_t a) +print_lv_a(mrb_state *mrb, const mrb_irep *irep, uint16_t a, FILE *out) { if (!irep->lv || a >= irep->nlocals || a == 0) { - printf("\n"); + fprintf(out, "\n"); return; } - printf("\t;"); - print_r(mrb, irep, a); - printf("\n"); + fprintf(out, "\t;"); + print_r(mrb, irep, a, out); + fprintf(out, "\n"); } static void -print_lv_ab(mrb_state *mrb, const mrb_irep *irep, uint16_t a, uint16_t b) +print_lv_ab(mrb_state *mrb, const mrb_irep *irep, uint16_t a, uint16_t b, FILE *out) { if (!irep->lv || (a >= irep->nlocals && b >= irep->nlocals) || a+b == 0) { - printf("\n"); + fprintf(out, "\n"); return; } - printf("\t;"); - if (a > 0) print_r(mrb, irep, a); - if (b > 0) print_r(mrb, irep, b); - printf("\n"); + fprintf(out, "\t;"); + if (a > 0) print_r(mrb, irep, a, out); + if (b > 0) print_r(mrb, irep, b, out); + fprintf(out, "\n"); } static void -print_header(mrb_state *mrb, const mrb_irep *irep, ptrdiff_t i) +print_header(mrb_state *mrb, const mrb_irep *irep, ptrdiff_t i, FILE *out) { int32_t line; mrb_assert(i <= UINT32_MAX); line = mrb_debug_get_line(mrb, irep, (uint32_t)i); if (line < 0) { - printf(" "); + fprintf(out, " "); } else { - printf("%5d ", line); + fprintf(out, "%5d ", line); } - printf("%03d ", (int)i); + fprintf(out, "%03d ", (int)i); } static void -print_args(uint16_t i) +print_args(uint16_t i, FILE *out) { mrb_assert(i <= 255); uint8_t n = i&0xf; uint8_t nk = (i>>4)&0xf; if (n == 15) { - printf("n=*"); + fprintf(out, "n=*"); } else { - printf("n=%d", n); + fprintf(out, "n=%d", n); } if (nk > 0) { - printf("|"); + fprintf(out, "|"); if (nk == 15) { - printf("nk=*"); + fprintf(out, "nk=*"); } else { - printf("nk=%d", nk); + fprintf(out, "nk=%d", nk); } } - printf("\n"); + fprintf(out, "\n"); } #define CASE(insn,ops) case insn: FETCH_ ## ops (); L_ ## insn static void -codedump(mrb_state *mrb, const mrb_irep *irep) +codedump(mrb_state *mrb, const mrb_irep *irep, FILE *out) { int ai; const mrb_code *pc, *pcend; @@ -95,8 +95,8 @@ codedump(mrb_state *mrb, const mrb_irep *irep) const char *file = NULL, *next_file; if (!irep) return; - printf("irep %p nregs=%d nlocals=%d pools=%d syms=%d reps=%d ilen=%d\n", (void*)irep, - irep->nregs, irep->nlocals, (int)irep->plen, (int)irep->slen, (int)irep->rlen, (int)irep->ilen); + fprintf(out, "irep %p nregs=%d nlocals=%d pools=%d syms=%d reps=%d ilen=%d\n", (void*)irep, + irep->nregs, irep->nlocals, (int)irep->plen, (int)irep->slen, (int)irep->rlen, (int)irep->ilen); if (irep->lv) { int i; @@ -107,9 +107,9 @@ codedump(mrb_state *mrb, const mrb_irep *irep) if (s) { if (!head) { head = TRUE; - printf("local variable names:\n"); + fprintf(out, "local variable names:\n"); } - printf(" R%d:%s\n", i, s); + fprintf(out, " R%d:%s\n", i, s); } } } @@ -138,7 +138,7 @@ codedump(mrb_state *mrb, const mrb_irep *irep) type = buf; break; } - printf("catch type: %-8s begin: %04" PRIu32 " end: %04" PRIu32 " target: %04" PRIu32 "\n", type, begin, end, target); + fprintf(out, "catch type: %-8s begin: %04" PRIu32 " end: %04" PRIu32 " target: %04" PRIu32 "\n", type, begin, end, target); } } @@ -155,60 +155,60 @@ codedump(mrb_state *mrb, const mrb_irep *irep) i = pc - irep->iseq; next_file = mrb_debug_get_filename(mrb, irep, (uint32_t)i); if (next_file && file != next_file) { - printf("file: %s\n", next_file); + fprintf(out, "file: %s\n", next_file); file = next_file; } - print_header(mrb, irep, i); + print_header(mrb, irep, i, out); ins = READ_B(); switch (ins) { CASE(OP_NOP, Z): - printf("NOP\n"); + fprintf(out, "NOP\n"); break; CASE(OP_MOVE, BB): - printf("MOVE\t\tR%d\tR%d\t", a, b); - print_lv_ab(mrb, irep, a, b); + fprintf(out, "MOVE\t\tR%d\tR%d\t", a, b); + print_lv_ab(mrb, irep, a, b, out); break; CASE(OP_LOADL, BB): switch (irep->pool[b].tt) { #ifndef MRB_NO_FLOAT case IREP_TT_FLOAT: - printf("LOADL\t\tR%d\tL(%d)\t; %f", a, b, (double)irep->pool[b].u.f); + fprintf(out, "LOADL\t\tR%d\tL(%d)\t; %f", a, b, (double)irep->pool[b].u.f); break; #endif case IREP_TT_INT32: - printf("LOADL\t\tR%d\tL(%d)\t; %" PRId32, a, b, irep->pool[b].u.i32); + fprintf(out, "LOADL\t\tR%d\tL(%d)\t; %" PRId32, a, b, irep->pool[b].u.i32); break; #ifdef MRB_64BIT case IREP_TT_INT64: - printf("LOADL\t\tR%d\tL(%d)\t; %" PRId64, a, b, irep->pool[b].u.i64); + fprintf(out, "LOADL\t\tR%d\tL(%d)\t; %" PRId64, a, b, irep->pool[b].u.i64); break; #endif default: - printf("LOADL\t\tR%d\tL(%d)\t", a, b); + fprintf(out, "LOADL\t\tR%d\tL(%d)\t", a, b); break; } - print_lv_a(mrb, irep, a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADI, BB): - printf("LOADI\t\tR%d\t%d\t", a, b); - print_lv_a(mrb, irep, a); + fprintf(out, "LOADI\t\tR%d\t%d\t", a, b); + print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADINEG, BB): - printf("LOADINEG\tR%d\t-%d\t", a, b); - print_lv_a(mrb, irep, a); + fprintf(out, "LOADINEG\tR%d\t-%d\t", a, b); + print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADI16, BS): - printf("LOADI16\tR%d\t%d\t", a, (int)(int16_t)b); - print_lv_a(mrb, irep, a); + fprintf(out, "LOADI16\tR%d\t%d\t", a, (int)(int16_t)b); + print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADI32, BSS): - printf("LOADI32\tR%d\t%d\t", a, (int32_t)(((uint32_t)b<<16)+c)); - print_lv_a(mrb, irep, a); + fprintf(out, "LOADI32\tR%d\t%d\t", a, (int32_t)(((uint32_t)b<<16)+c)); + print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADI__1, B): - printf("LOADI__1\tR%d\t(-1)\t", a); - print_lv_a(mrb, irep, a); + fprintf(out, "LOADI__1\tR%d\t(-1)\t", a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADI_0, B): goto L_LOADI; CASE(OP_LOADI_1, B): goto L_LOADI; @@ -220,366 +220,366 @@ codedump(mrb_state *mrb, const mrb_irep *irep) CASE(OP_LOADI_7, B): L_LOADI: b = ins-(int)OP_LOADI_0; - printf("LOADI_%d\tR%d\t(%d)\t", b, a, b); - print_lv_a(mrb, irep, a); + fprintf(out, "LOADI_%d\tR%d\t(%d)\t", b, a, b); + print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADSYM, BB): - printf("LOADSYM\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); - print_lv_a(mrb, irep, a); + fprintf(out, "LOADSYM\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADNIL, B): - printf("LOADNIL\tR%d\t(nil)\t", a); - print_lv_a(mrb, irep, a); + fprintf(out, "LOADNIL\tR%d\t(nil)\t", a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADSELF, B): - printf("LOADSELF\tR%d\t(R0)\t", a); - print_lv_a(mrb, irep, a); + fprintf(out, "LOADSELF\tR%d\t(R0)\t", a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADT, B): - printf("LOADT\t\tR%d\t(true)\t", a); - print_lv_a(mrb, irep, a); + fprintf(out, "LOADT\t\tR%d\t(true)\t", a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADF, B): - printf("LOADF\t\tR%d\t(false)\t", a); - print_lv_a(mrb, irep, a); + fprintf(out, "LOADF\t\tR%d\t(false)\t", a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_GETGV, BB): - printf("GETGV\t\tR%d\t%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); - print_lv_a(mrb, irep, a); + fprintf(out, "GETGV\t\tR%d\t%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + print_lv_a(mrb, irep, a, out); break; CASE(OP_SETGV, BB): - printf("SETGV\t\t%s\tR%d\t", mrb_sym_dump(mrb, irep->syms[b]), a); - print_lv_a(mrb, irep, a); + fprintf(out, "SETGV\t\t%s\tR%d\t", mrb_sym_dump(mrb, irep->syms[b]), a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_GETSV, BB): - printf("GETSV\t\tR%d\t%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); - print_lv_a(mrb, irep, a); + fprintf(out, "GETSV\t\tR%d\t%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + print_lv_a(mrb, irep, a, out); break; CASE(OP_SETSV, BB): - printf("SETSV\t\t%s\tR%d\t", mrb_sym_dump(mrb, irep->syms[b]), a); - print_lv_a(mrb, irep, a); + fprintf(out, "SETSV\t\t%s\tR%d\t", mrb_sym_dump(mrb, irep->syms[b]), a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_GETCONST, BB): - printf("GETCONST\tR%d\t%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); - print_lv_a(mrb, irep, a); + fprintf(out, "GETCONST\tR%d\t%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + print_lv_a(mrb, irep, a, out); break; CASE(OP_SETCONST, BB): - printf("SETCONST\t%s\tR%d\t", mrb_sym_dump(mrb, irep->syms[b]), a); - print_lv_a(mrb, irep, a); + fprintf(out, "SETCONST\t%s\tR%d\t", mrb_sym_dump(mrb, irep->syms[b]), a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_GETMCNST, BB): - printf("GETMCNST\tR%d\tR%d::%s\t", a, a, mrb_sym_dump(mrb, irep->syms[b])); - print_lv_a(mrb, irep, a); + fprintf(out, "GETMCNST\tR%d\tR%d::%s\t", a, a, mrb_sym_dump(mrb, irep->syms[b])); + print_lv_a(mrb, irep, a, out); break; CASE(OP_SETMCNST, BB): - printf("SETMCNST\tR%d::%s\tR%d\t", a+1, mrb_sym_dump(mrb, irep->syms[b]), a); - print_lv_a(mrb, irep, a); + fprintf(out, "SETMCNST\tR%d::%s\tR%d\t", a+1, mrb_sym_dump(mrb, irep->syms[b]), a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_GETIV, BB): - printf("GETIV\t\tR%d\t%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); - print_lv_a(mrb, irep, a); + fprintf(out, "GETIV\t\tR%d\t%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + print_lv_a(mrb, irep, a, out); break; CASE(OP_SETIV, BB): - printf("SETIV\t\t%s\tR%d\t", mrb_sym_dump(mrb, irep->syms[b]), a); - print_lv_a(mrb, irep, a); + fprintf(out, "SETIV\t\t%s\tR%d\t", mrb_sym_dump(mrb, irep->syms[b]), a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_GETUPVAR, BBB): - printf("GETUPVAR\tR%d\t%d\t%d\t", a, b, c); - print_lv_a(mrb, irep, a); + fprintf(out, "GETUPVAR\tR%d\t%d\t%d\t", a, b, c); + print_lv_a(mrb, irep, a, out); break; CASE(OP_SETUPVAR, BBB): - printf("SETUPVAR\tR%d\t%d\t%d\t", a, b, c); - print_lv_a(mrb, irep, a); + fprintf(out, "SETUPVAR\tR%d\t%d\t%d\t", a, b, c); + print_lv_a(mrb, irep, a, out); break; CASE(OP_GETCV, BB): - printf("GETCV\t\tR%d\t%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); - print_lv_a(mrb, irep, a); + fprintf(out, "GETCV\t\tR%d\t%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + print_lv_a(mrb, irep, a, out); break; CASE(OP_SETCV, BB): - printf("SETCV\t\t%s\tR%d\t", mrb_sym_dump(mrb, irep->syms[b]), a); - print_lv_a(mrb, irep, a); + fprintf(out, "SETCV\t\t%s\tR%d\t", mrb_sym_dump(mrb, irep->syms[b]), a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_GETIDX, B): - printf("GETIDX\tR%d\tR%d\n", a, a+1); + fprintf(out, "GETIDX\tR%d\tR%d\n", a, a+1); break; CASE(OP_SETIDX, B): - printf("SETIDX\tR%d\tR%d\tR%d\n", a, a+1, a+2); + fprintf(out, "SETIDX\tR%d\tR%d\tR%d\n", a, a+1, a+2); break; CASE(OP_JMP, S): i = pc - irep->iseq; - printf("JMP\t\t%03d\n", (int)i+(int16_t)a); + fprintf(out, "JMP\t\t%03d\n", (int)i+(int16_t)a); break; CASE(OP_JMPUW, S): i = pc - irep->iseq; - printf("JMPUW\t\t%03d\n", (int)i+(int16_t)a); + fprintf(out, "JMPUW\t\t%03d\n", (int)i+(int16_t)a); break; CASE(OP_JMPIF, BS): i = pc - irep->iseq; - printf("JMPIF\t\tR%d\t%03d\t", a, (int)i+(int16_t)b); - print_lv_a(mrb, irep, a); + fprintf(out, "JMPIF\t\tR%d\t%03d\t", a, (int)i+(int16_t)b); + print_lv_a(mrb, irep, a, out); break; CASE(OP_JMPNOT, BS): i = pc - irep->iseq; - printf("JMPNOT\tR%d\t%03d\t", a, (int)i+(int16_t)b); - print_lv_a(mrb, irep, a); + fprintf(out, "JMPNOT\tR%d\t%03d\t", a, (int)i+(int16_t)b); + print_lv_a(mrb, irep, a, out); break; CASE(OP_JMPNIL, BS): i = pc - irep->iseq; - printf("JMPNIL\tR%d\t%03d\t", a, (int)i+(int16_t)b); - print_lv_a(mrb, irep, a); + fprintf(out, "JMPNIL\tR%d\t%03d\t", a, (int)i+(int16_t)b); + print_lv_a(mrb, irep, a, out); break; CASE(OP_SSEND, BBB): - printf("SSEND\t\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); - print_args(c); + fprintf(out, "SSEND\t\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + print_args(c, out); break; CASE(OP_SSENDB, BBB): - printf("SSENDB\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); - print_args(c); + fprintf(out, "SSENDB\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + print_args(c, out); break; CASE(OP_SEND, BBB): - printf("SEND\t\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); - print_args(c); + fprintf(out, "SEND\t\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + print_args(c, out); break; CASE(OP_SENDB, BBB): - printf("SENDB\t\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); - print_args(c); + fprintf(out, "SENDB\t\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + print_args(c, out); break; CASE(OP_CALL, Z): - printf("CALL\n"); + fprintf(out, "CALL\n"); break; CASE(OP_SUPER, BB): - printf("SUPER\t\tR%d\t", a); - print_args(b); + fprintf(out, "SUPER\t\tR%d\t", a); + print_args(b, out); break; CASE(OP_ARGARY, BS): - printf("ARGARY\tR%d\t%d:%d:%d:%d (%d)\t", a, + fprintf(out, "ARGARY\tR%d\t%d:%d:%d:%d (%d)\t", a, (b>>11)&0x3f, (b>>10)&0x1, (b>>5)&0x1f, (b>>4)&0x1, (b>>0)&0xf); - print_lv_a(mrb, irep, a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_ENTER, W): - printf("ENTER\t\t%d:%d:%d:%d:%d:%d:%d (0x%x)\n", - MRB_ASPEC_REQ(a), - MRB_ASPEC_OPT(a), - MRB_ASPEC_REST(a), - MRB_ASPEC_POST(a), - MRB_ASPEC_KEY(a), - MRB_ASPEC_KDICT(a), - MRB_ASPEC_BLOCK(a), a); + fprintf(out, "ENTER\t\t%d:%d:%d:%d:%d:%d:%d (0x%x)\n", + MRB_ASPEC_REQ(a), + MRB_ASPEC_OPT(a), + MRB_ASPEC_REST(a), + MRB_ASPEC_POST(a), + MRB_ASPEC_KEY(a), + MRB_ASPEC_KDICT(a), + MRB_ASPEC_BLOCK(a), a); break; CASE(OP_KEY_P, BB): - printf("KEY_P\t\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); - print_lv_a(mrb, irep, a); + fprintf(out, "KEY_P\t\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + print_lv_a(mrb, irep, a, out); break; CASE(OP_KEYEND, Z): - printf("KEYEND\n"); + fprintf(out, "KEYEND\n"); break; CASE(OP_KARG, BB): - printf("KARG\t\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); - print_lv_a(mrb, irep, a); + fprintf(out, "KARG\t\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + print_lv_a(mrb, irep, a, out); break; CASE(OP_RETURN, B): - printf("RETURN\tR%d\t\t", a); - print_lv_a(mrb, irep, a); + fprintf(out, "RETURN\tR%d\t\t", a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_RETURN_BLK, B): - printf("RETURN_BLK\tR%d\t\t", a); - print_lv_a(mrb, irep, a); + fprintf(out, "RETURN_BLK\tR%d\t\t", a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_BREAK, B): - printf("BREAK\t\tR%d\t\t", a); - print_lv_a(mrb, irep, a); + fprintf(out, "BREAK\t\tR%d\t\t", a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_BLKPUSH, BS): - printf("BLKPUSH\tR%d\t%d:%d:%d:%d (%d)\t", a, + fprintf(out, "BLKPUSH\tR%d\t%d:%d:%d:%d (%d)\t", a, (b>>11)&0x3f, (b>>10)&0x1, (b>>5)&0x1f, (b>>4)&0x1, (b>>0)&0xf); - print_lv_a(mrb, irep, a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_LAMBDA, BB): - printf("LAMBDA\tR%d\tI(%d:%p)\n", a, b, (void*)irep->reps[b]); + fprintf(out, "LAMBDA\tR%d\tI(%d:%p)\n", a, b, (void*)irep->reps[b]); break; CASE(OP_BLOCK, BB): - printf("BLOCK\t\tR%d\tI(%d:%p)\n", a, b, (void*)irep->reps[b]); + fprintf(out, "BLOCK\t\tR%d\tI(%d:%p)\n", a, b, (void*)irep->reps[b]); break; CASE(OP_METHOD, BB): - printf("METHOD\tR%d\tI(%d:%p)\n", a, b, (void*)irep->reps[b]); + fprintf(out, "METHOD\tR%d\tI(%d:%p)\n", a, b, (void*)irep->reps[b]); break; CASE(OP_RANGE_INC, B): - printf("RANGE_INC\tR%d\n", a); + fprintf(out, "RANGE_INC\tR%d\n", a); break; CASE(OP_RANGE_EXC, B): - printf("RANGE_EXC\tR%d\n", a); + fprintf(out, "RANGE_EXC\tR%d\n", a); break; CASE(OP_DEF, BB): - printf("DEF\t\tR%d\t:%s\n", a, mrb_sym_dump(mrb, irep->syms[b])); + fprintf(out, "DEF\t\tR%d\t:%s\n", a, mrb_sym_dump(mrb, irep->syms[b])); break; CASE(OP_UNDEF, B): - printf("UNDEF\t\t:%s\n", mrb_sym_dump(mrb, irep->syms[a])); + fprintf(out, "UNDEF\t\t:%s\n", mrb_sym_dump(mrb, irep->syms[a])); break; CASE(OP_ALIAS, BB): - printf("ALIAS\t\t:%s\t%s\n", mrb_sym_dump(mrb, irep->syms[a]), mrb_sym_dump(mrb, irep->syms[b])); + fprintf(out, "ALIAS\t\t:%s\t%s\n", mrb_sym_dump(mrb, irep->syms[a]), mrb_sym_dump(mrb, irep->syms[b])); break; CASE(OP_ADD, B): - printf("ADD\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "ADD\t\tR%d\tR%d\n", a, a+1); break; CASE(OP_ADDI, BB): - printf("ADDI\t\tR%d\t%d\t", a, b); - print_lv_a(mrb, irep, a); + fprintf(out, "ADDI\t\tR%d\t%d\t", a, b); + print_lv_a(mrb, irep, a, out); break; CASE(OP_SUB, B): - printf("SUB\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "SUB\t\tR%d\tR%d\n", a, a+1); break; CASE(OP_SUBI, BB): - printf("SUBI\t\tR%d\t%d\t", a, b); - print_lv_a(mrb, irep, a); + fprintf(out, "SUBI\t\tR%d\t%d\t", a, b); + print_lv_a(mrb, irep, a, out); break; CASE(OP_MUL, B): - printf("MUL\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "MUL\t\tR%d\tR%d\n", a, a+1); break; CASE(OP_DIV, B): - printf("DIV\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "DIV\t\tR%d\tR%d\n", a, a+1); break; CASE(OP_LT, B): - printf("LT\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "LT\t\tR%d\tR%d\n", a, a+1); break; CASE(OP_LE, B): - printf("LE\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "LE\t\tR%d\tR%d\n", a, a+1); break; CASE(OP_GT, B): - printf("GT\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "GT\t\tR%d\tR%d\n", a, a+1); break; CASE(OP_GE, B): - printf("GE\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "GE\t\tR%d\tR%d\n", a, a+1); break; CASE(OP_EQ, B): - printf("EQ\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "EQ\t\tR%d\tR%d\n", a, a+1); break; CASE(OP_ARRAY, BB): - printf("ARRAY\t\tR%d\tR%d\t%d", a, a, b); - print_lv_a(mrb, irep, a); + fprintf(out, "ARRAY\t\tR%d\tR%d\t%d", a, a, b); + print_lv_a(mrb, irep, a, out); break; CASE(OP_ARRAY2, BBB): - printf("ARRAY\t\tR%d\tR%d\t%d", a, b, c); - print_lv_ab(mrb, irep, a, b); + fprintf(out, "ARRAY\t\tR%d\tR%d\t%d", a, b, c); + print_lv_ab(mrb, irep, a, b, out); break; CASE(OP_ARYCAT, B): - printf("ARYCAT\tR%d\tR%d\t", a, a+1); - print_lv_a(mrb, irep, a); + fprintf(out, "ARYCAT\tR%d\tR%d\t", a, a+1); + print_lv_a(mrb, irep, a, out); break; CASE(OP_ARYPUSH, BB): - printf("ARYPUSH\tR%d\t%d\t", a, b); - print_lv_a(mrb, irep, a); + fprintf(out, "ARYPUSH\tR%d\t%d\t", a, b); + print_lv_a(mrb, irep, a, out); break; CASE(OP_ARYSPLAT, B): - printf("ARYSPLAT\tR%d\t", a); - print_lv_a(mrb, irep, a); + fprintf(out, "ARYSPLAT\tR%d\t", a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_AREF, BBB): - printf("AREF\t\tR%d\tR%d\t%d", a, b, c); - print_lv_ab(mrb, irep, a, b); + fprintf(out, "AREF\t\tR%d\tR%d\t%d", a, b, c); + print_lv_ab(mrb, irep, a, b, out); break; CASE(OP_ASET, BBB): - printf("ASET\t\tR%d\tR%d\t%d", a, b, c); - print_lv_ab(mrb, irep, a, b); + fprintf(out, "ASET\t\tR%d\tR%d\t%d", a, b, c); + print_lv_ab(mrb, irep, a, b, out); break; CASE(OP_APOST, BBB): - printf("APOST\t\tR%d\t%d\t%d", a, b, c); - print_lv_a(mrb, irep, a); + fprintf(out, "APOST\t\tR%d\t%d\t%d", a, b, c); + print_lv_a(mrb, irep, a, out); break; CASE(OP_INTERN, B): - printf("INTERN\tR%d\t\t", a); - print_lv_a(mrb, irep, a); + fprintf(out, "INTERN\tR%d\t\t", a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_SYMBOL, BB): mrb_assert((irep->pool[b].tt&IREP_TT_NFLAG)==0); - printf("SYMBOL\tR%d\tL(%d)\t; %s", a, b, irep->pool[b].u.str); - print_lv_a(mrb, irep, a); + fprintf(out, "SYMBOL\tR%d\tL(%d)\t; %s", a, b, irep->pool[b].u.str); + print_lv_a(mrb, irep, a, out); break; CASE(OP_STRING, BB): mrb_assert((irep->pool[b].tt&IREP_TT_NFLAG)==0); - printf("STRING\tR%d\tL(%d)\t; %s", a, b, irep->pool[b].u.str); - print_lv_a(mrb, irep, a); + fprintf(out, "STRING\tR%d\tL(%d)\t; %s", a, b, irep->pool[b].u.str); + print_lv_a(mrb, irep, a, out); break; CASE(OP_STRCAT, B): - printf("STRCAT\tR%d\tR%d\t", a, a+1); - print_lv_a(mrb, irep, a); + fprintf(out, "STRCAT\tR%d\tR%d\t", a, a+1); + print_lv_a(mrb, irep, a, out); break; CASE(OP_HASH, BB): - printf("HASH\t\tR%d\t%d\t", a, b); - print_lv_a(mrb, irep, a); + fprintf(out, "HASH\t\tR%d\t%d\t", a, b); + print_lv_a(mrb, irep, a, out); break; CASE(OP_HASHADD, BB): - printf("HASHADD\tR%d\t%d\t", a, b); - print_lv_a(mrb, irep, a); + fprintf(out, "HASHADD\tR%d\t%d\t", a, b); + print_lv_a(mrb, irep, a, out); break; CASE(OP_HASHCAT, B): - printf("HASHCAT\tR%d\tR%d\t", a, a+1); - print_lv_a(mrb, irep, a); + fprintf(out, "HASHCAT\tR%d\tR%d\t", a, a+1); + print_lv_a(mrb, irep, a, out); break; CASE(OP_OCLASS, B): - printf("OCLASS\tR%d\t\t", a); - print_lv_a(mrb, irep, a); + fprintf(out, "OCLASS\tR%d\t\t", a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_CLASS, BB): - printf("CLASS\t\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b])); - print_lv_a(mrb, irep, a); + fprintf(out, "CLASS\t\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b])); + print_lv_a(mrb, irep, a, out); break; CASE(OP_MODULE, BB): - printf("MODULE\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b])); - print_lv_a(mrb, irep, a); + fprintf(out, "MODULE\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b])); + print_lv_a(mrb, irep, a, out); break; CASE(OP_EXEC, BB): - printf("EXEC\t\tR%d\tI(%d:%p)", a, b, (void*)irep->reps[b]); - print_lv_a(mrb, irep, a); + fprintf(out, "EXEC\t\tR%d\tI(%d:%p)", a, b, (void*)irep->reps[b]); + print_lv_a(mrb, irep, a, out); break; CASE(OP_SCLASS, B): - printf("SCLASS\t\tR%d\t", a); - print_lv_a(mrb, irep, a); + fprintf(out, "SCLASS\t\tR%d\t", a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_TCLASS, B): - printf("TCLASS\tR%d\t\t", a); - print_lv_a(mrb, irep, a); + fprintf(out, "TCLASS\tR%d\t\t", a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_ERR, B): if ((irep->pool[a].tt & IREP_TT_NFLAG) == 0) { - printf("ERR\t\t%s\n", irep->pool[a].u.str); + fprintf(out, "ERR\t\t%s\n", irep->pool[a].u.str); } else { - printf("ERR\tL(%d)\n", a); + fprintf(out, "ERR\tL(%d)\n", a); } break; CASE(OP_EXCEPT, B): - printf("EXCEPT\tR%d\t\t", a); - print_lv_a(mrb, irep, a); + fprintf(out, "EXCEPT\tR%d\t\t", a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_RESCUE, BB): - printf("RESCUE\tR%d\tR%d", a, b); - print_lv_ab(mrb, irep, a, b); + fprintf(out, "RESCUE\tR%d\tR%d", a, b); + print_lv_ab(mrb, irep, a, b, out); break; CASE(OP_RAISEIF, B): - printf("RAISEIF\tR%d\t\t", a); - print_lv_a(mrb, irep, a); + fprintf(out, "RAISEIF\tR%d\t\t", a); + print_lv_a(mrb, irep, a, out); break; CASE(OP_DEBUG, BBB): - printf("DEBUG\t\t%d\t%d\t%d\n", a, b, c); + fprintf(out, "DEBUG\t\t%d\t%d\t%d\n", a, b, c); break; CASE(OP_STOP, Z): - printf("STOP\n"); + fprintf(out, "STOP\n"); break; CASE(OP_EXT1, Z): - printf("EXT1\n"); - print_header(mrb, irep, pc-irep->iseq); + fprintf(out, "EXT1\n"); + print_header(mrb, irep, pc-irep->iseq, out); ins = READ_B(); switch (ins) { #define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); goto L_OP_ ## i; @@ -588,8 +588,8 @@ codedump(mrb_state *mrb, const mrb_irep *irep) } break; CASE(OP_EXT2, Z): - printf("EXT2\n"); - print_header(mrb, irep, pc-irep->iseq); + fprintf(out, "EXT2\n"); + print_header(mrb, irep, pc-irep->iseq, out); ins = READ_B(); switch (ins) { #define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); goto L_OP_ ## i; @@ -598,8 +598,8 @@ codedump(mrb_state *mrb, const mrb_irep *irep) } break; CASE(OP_EXT3, Z): - printf("EXT3\n"); - print_header(mrb, irep, pc-irep->iseq); + fprintf(out, "EXT3\n"); + print_header(mrb, irep, pc-irep->iseq, out); ins = READ_B(); switch (ins) { #define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); goto L_OP_ ## i; @@ -609,32 +609,39 @@ codedump(mrb_state *mrb, const mrb_irep *irep) break; default: - printf("unknown_op (0x%x)\n", ins); + fprintf(out, "unknown_op (0x%x)\n", ins); break; } mrb_gc_arena_restore(mrb, ai); } - printf("\n"); + fprintf(out, "\n"); } static void -codedump_recur(mrb_state *mrb, const mrb_irep *irep) +codedump_recur(mrb_state *mrb, const mrb_irep *irep, FILE *out) { int i; - codedump(mrb, irep); + codedump(mrb, irep, out); if (irep->reps) { for (i=0; irlen; i++) { - codedump_recur(mrb, irep->reps[i]); + codedump_recur(mrb, irep->reps[i], out); } } } + +void +mrb_codedump_all_file(mrb_state *mrb, struct RProc *proc, FILE *out) +{ + codedump_recur(mrb, proc->body.irep, out); +} + #endif void mrb_codedump_all(mrb_state *mrb, struct RProc *proc) { #ifndef MRB_NO_STDIO - codedump_recur(mrb, proc->body.irep); + mrb_codedump_all_file(mrb, proc, stdout); #endif } diff --git a/src/load.c b/src/load.c index cfc9a5e21..52cb154b8 100644 --- a/src/load.c +++ b/src/load.c @@ -669,8 +669,6 @@ irep_error(mrb_state *mrb) mrb_exc_set(mrb, mrb_exc_new_lit(mrb, E_SCRIPT_ERROR, "irep load error")); } -void mrb_codedump_all(mrb_state*, struct RProc*); - static mrb_value load_irep(mrb_state *mrb, struct RProc *proc, mrbc_context *c) { diff --git a/src/vm.c b/src/vm.c index 2bb3ff30f..323324d39 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1269,6 +1269,13 @@ mrb_vm_run(mrb_state *mrb, const struct RProc *proc, mrb_value self, mrb_int sta } if (stack_keep > nregs) nregs = stack_keep; + else { + struct REnv *e = CI_ENV(mrb->c->ci); + if (stack_keep == 0 || (e && irep->nlocals < MRB_ENV_LEN(e))) { + mrb_vm_ci_env_set(mrb->c->ci, NULL); + mrb_env_unshare(mrb, e, FALSE); + } + } mrb_stack_extend(mrb, nregs); stack_clear(c->ci->stack + stack_keep, nregs - stack_keep); c->ci->stack[0] = self; @@ -3102,11 +3109,6 @@ mrb_top_run(mrb_state *mrb, const struct RProc *proc, mrb_value self, mrb_int st return mrb_vm_run(mrb, proc, self, stack_keep); } if (mrb->c->ci == mrb->c->cibase) { - if (stack_keep == 0) { - struct REnv *e = mrb_vm_ci_env(mrb->c->ci); - mrb_vm_ci_env_set(mrb->c->ci, NULL); - mrb_env_unshare(mrb, e, FALSE); - } return mrb_vm_run(mrb, proc, self, stack_keep); } cipush(mrb, 0, CINFO_SKIP, mrb->object_class, NULL, NULL, 0, 0);