From 392f4fabc07e3db0386017580f19e92a53ca3f9f Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 27 Aug 2025 08:22:23 +0900 Subject: [PATCH] mruby-compiler: use variable-sized ast nodes for call, array, and hash Introduces variable-sized AST nodes for method calls (NODE_CALL), arrays (NODE_ARRAY), and hashes (NODE_HASH). This change improves memory efficiency by storing elements directly within the AST node, avoiding an extra layer of pointer indirection for their data. This is achieved by adding new data structures and functions in both the parser and the code generator to handle these new node types. Variable-sized nodes are now enabled by default. Co-authored-by: Claude --- mrbgems/mruby-compiler/core/codegen.c | 186 ++ mrbgems/mruby-compiler/core/node.h | 57 + mrbgems/mruby-compiler/core/parse.y | 162 +- mrbgems/mruby-compiler/core/y.tab.c | 3962 +++++++++++++------------ 4 files changed, 2465 insertions(+), 1902 deletions(-) diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index e18298c12..78a114dab 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -4920,6 +4920,180 @@ codegen_yield(codegen_scope *s, node *tree, int val) /* Handle variable-sized node types */ +static void +gen_call_var(codegen_scope *s, node *varnode, int val) +{ + struct mrb_ast_call_node *call = call_node(varnode); + mrb_sym sym = CALL_NODE_METHOD(call); + int skip = 0, n = 0, nk = 0, noop = no_optimize(s), noself = 0, blk = 0, sp_save = cursp(); + enum mrb_insn opt_op = OP_NOP; + int argc = CALL_NODE_ARGC(call); + int safe = CALL_NODE_SAFE(call); + + if (!noop) { + if (sym == MRB_OPSYM_2(s->mrb, add)) opt_op = OP_ADD; + else if (sym == MRB_OPSYM_2(s->mrb, sub)) opt_op = OP_SUB; + else if (sym == MRB_OPSYM_2(s->mrb, mul)) opt_op = OP_MUL; + else if (sym == MRB_OPSYM_2(s->mrb, div)) opt_op = OP_DIV; + else if (sym == MRB_OPSYM_2(s->mrb, lt)) opt_op = OP_LT; + else if (sym == MRB_OPSYM_2(s->mrb, le)) opt_op = OP_LE; + else if (sym == MRB_OPSYM_2(s->mrb, gt)) opt_op = OP_GT; + else if (sym == MRB_OPSYM_2(s->mrb, ge)) opt_op = OP_GE; + else if (sym == MRB_OPSYM_2(s->mrb, eq)) opt_op = OP_EQ; + else if (sym == MRB_OPSYM_2(s->mrb, aref)) opt_op = OP_GETIDX; + else if (sym == MRB_OPSYM_2(s->mrb, aset)) opt_op = OP_SETIDX; + } + + if (!CALL_NODE_RECEIVER(call)) { + noself = 1; + push(); + } + else { + codegen(s, CALL_NODE_RECEIVER(call), VAL); /* receiver */ + } + + if (safe) { + int recv = cursp()-1; + gen_move(s, cursp(), recv, 1); + skip = genjmp2_0(s, OP_JMPNIL, cursp(), val); + } + + /* Generate arguments */ + n = argc; + if (argc > 0) { + struct mrb_ast_node **args = CALL_NODE_ARGS(call); + int i; + for (i = 0; i < argc; i++) { + codegen(s, args[i], VAL); + } + if (n > 14) { + noop = 1; + n = 15; + push(); + } + } + + /* Handle keyword arguments if present */ + if (CALL_NODE_HAS_KWARGS(call)) { + noop = 1; + nk = 1; /* Simplified - would need proper kwarg handling */ + } + + /* Handle block if present */ + if (CALL_NODE_HAS_BLOCK(call)) { + noop = 1; + blk = 1; + } + + push(); + s->sp = sp_save; + + /* Apply optimizations */ + if (opt_op == OP_ADD && n == 1) { + gen_addsub(s, OP_ADD, cursp()); + } + else if (opt_op == OP_SUB && n == 1) { + gen_addsub(s, OP_SUB, cursp()); + } + else if (opt_op == OP_MUL && n == 1) { + gen_muldiv(s, OP_MUL, cursp()); + } + else if (opt_op == OP_DIV && n == 1) { + gen_muldiv(s, OP_DIV, cursp()); + } + else if (opt_op == OP_LT && n == 1) { + genop_1(s, OP_LT, cursp()); + } + else if (opt_op == OP_LE && n == 1) { + genop_1(s, OP_LE, cursp()); + } + else if (opt_op == OP_GT && n == 1) { + genop_1(s, OP_GT, cursp()); + } + else if (opt_op == OP_GE && n == 1) { + genop_1(s, OP_GE, cursp()); + } + else if (opt_op == OP_EQ && n == 1) { + genop_1(s, OP_EQ, cursp()); + } + else if (opt_op == OP_SETIDX && n == 2) { + genop_1(s, OP_SETIDX, cursp()); + } + else if (!noop && n == 0 && gen_uniop(s, sym, cursp())) { + /* constant folding succeeded */ + } + else if (!noop && n == 1 && gen_binop(s, sym, cursp())) { + /* constant folding succeeded */ + } + else if (noself) { + genop_3(s, blk ? OP_SSENDB : OP_SSEND, cursp(), new_sym(s, sym), n|(nk<<4)); + } + else { + genop_3(s, blk ? OP_SENDB : OP_SEND, cursp(), new_sym(s, sym), n|(nk<<4)); + } + + if (safe) { + dispatch(s, skip); + } + if (!val) return; + push(); +} + +static void +gen_array_var(codegen_scope *s, node *varnode, int val) +{ + struct mrb_ast_array_node *array = array_node(varnode); + int len = ARRAY_NODE_LEN(array); + struct mrb_ast_node **elements = ARRAY_NODE_ELEMENTS(array); + int i; + + if (!val) return; + + if (len == 0) { + genop_2(s, OP_ARRAY, cursp(), 0); + push(); + return; + } + + /* Generate code for each element */ + for (i = 0; i < len; i++) { + codegen(s, elements[i], VAL); + } + + /* Create array with elements on stack */ + pop_n(len); + genop_2(s, OP_ARRAY, cursp(), len); + push(); +} + +static void +gen_hash_var(codegen_scope *s, node *varnode, int val) +{ + struct mrb_ast_hash_node *hash = hash_node(varnode); + int len = HASH_NODE_LEN(hash); + struct mrb_ast_node **pairs = HASH_NODE_PAIRS(hash); + int i; + + if (!val) return; + + if (len == 0) { + genop_2(s, OP_HASH, cursp(), 0); + push(); + return; + } + + /* Generate code for each key-value pair */ + for (i = 0; i < len; i++) { + codegen(s, pairs[i * 2], VAL); /* key */ + codegen(s, pairs[i * 2 + 1], VAL); /* value */ + } + + /* Create hash with key-value pairs on stack */ + pop_n(len * 2); /* Pop all keys and values */ + genop_2(s, OP_HASH, cursp(), len); + push(); +} + static mrb_bool codegen_variable_node(codegen_scope *s, node *varnode, int val) { @@ -4961,6 +5135,18 @@ codegen_variable_node(codegen_scope *s, node *varnode, int val) codegen_cvar(s, VAR_NODE_SYMBOL(varnode), val); return TRUE; + case NODE_CALL: + gen_call_var(s, varnode, val); + return TRUE; + + case NODE_ARRAY: + gen_array_var(s, varnode, val); + return TRUE; + + case NODE_HASH: + gen_hash_var(s, varnode, val); + return TRUE; + default: return FALSE; /* Not handled, fall through to main codegen */ } diff --git a/mrbgems/mruby-compiler/core/node.h b/mrbgems/mruby-compiler/core/node.h index be1f86c74..9addba15b 100644 --- a/mrbgems/mruby-compiler/core/node.h +++ b/mrbgems/mruby-compiler/core/node.h @@ -213,6 +213,43 @@ struct mrb_ast_var_node { mrb_sym symbol; }; +/* Phase 2 Variable Node Structures */ + +/* Variable-sized call node with inline argument storage */ +struct mrb_ast_call_node { + struct mrb_ast_var_header header; /* 8 bytes */ + struct mrb_ast_node *receiver; /* Receiver object */ + mrb_sym method_name; /* Method name symbol */ + uint8_t argc; /* Number of regular arguments */ + uint8_t has_kwargs:1; /* Has keyword arguments */ + uint8_t has_block:1; /* Has block argument */ + uint8_t safe_call:1; /* Safe navigation (&.) */ + uint8_t reserved:5; /* Reserved for future flags */ + /* Followed by variable data: + * - argc * sizeof(struct mrb_ast_node*) for regular arguments + * - struct mrb_ast_node* for kwargs (if has_kwargs) + * - struct mrb_ast_node* for block (if has_block) + */ + struct mrb_ast_node *args[]; /* Flexible array for arguments */ +}; + +/* Variable-sized array node with inline element storage */ +struct mrb_ast_array_node { + struct mrb_ast_var_header header; /* 8 bytes */ + uint16_t len; /* Number of elements */ + uint16_t flags; /* Array-specific flags */ + struct mrb_ast_node *elements[]; /* Flexible array for elements */ +}; + +/* Variable-sized hash node with inline key-value storage */ +struct mrb_ast_hash_node { + struct mrb_ast_var_header header; /* 8 bytes */ + uint16_t len; /* Number of key-value pairs */ + uint16_t flags; /* Hash-specific flags */ + /* Interleaved key-value pairs: key0, value0, key1, value1, ... */ + struct mrb_ast_node *pairs[]; /* Flexible array for key-value pairs */ +}; + /* String storage strategy thresholds */ #define STR_INLINE_THRESHOLD 48 /* Inline strings <= 48 bytes */ #define STR_SMALL_THRESHOLD 128 /* Small strings <= 128 bytes */ @@ -238,6 +275,11 @@ struct mrb_ast_var_node { #define int_node(n) ((struct mrb_ast_int_node*)(n)) #define var_node(n) ((struct mrb_ast_var_node*)(n)) +/* Phase 2 node casting macros */ +#define call_node(n) ((struct mrb_ast_call_node*)(n)) +#define array_node(n) ((struct mrb_ast_array_node*)(n)) +#define hash_node(n) ((struct mrb_ast_hash_node*)(n)) + /* Phase 1 value access macros */ #define SYM_NODE_VALUE(n) (sym_node(n)->symbol) #define STR_NODE_PTR(n) (str_node(n)->data) @@ -246,4 +288,19 @@ struct mrb_ast_var_node { #define INT_NODE_VALUE(n) (int_node(n)->value) #define VAR_NODE_SYMBOL(n) (var_node(n)->symbol) +/* Phase 2 value access macros */ +#define CALL_NODE_RECEIVER(n) (call_node(n)->receiver) +#define CALL_NODE_METHOD(n) (call_node(n)->method_name) +#define CALL_NODE_ARGC(n) (call_node(n)->argc) +#define CALL_NODE_ARGS(n) (call_node(n)->args) +#define CALL_NODE_HAS_KWARGS(n) (call_node(n)->has_kwargs) +#define CALL_NODE_HAS_BLOCK(n) (call_node(n)->has_block) +#define CALL_NODE_SAFE(n) (call_node(n)->safe_call) + +#define ARRAY_NODE_LEN(n) (array_node(n)->len) +#define ARRAY_NODE_ELEMENTS(n) (array_node(n)->elements) + +#define HASH_NODE_LEN(n) (hash_node(n)->len) +#define HASH_NODE_PAIRS(n) (hash_node(n)->pairs) + #endif /* MRUBY_COMPILER_NODE_H */ diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 34aeda007..d9d342b78 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -610,15 +610,169 @@ new_self(parser_state *p) return list1((node*)NODE_SELF); } +/* Forward declaration for variable-sized call node */ +static node* new_call_var(parser_state *p, node *receiver, mrb_sym method, node *args, int pass); +static node* new_array_var(parser_state *p, node *a); +static node* new_hash_var(parser_state *p, node *a); + /* (:call a b c) */ static node* new_call(parser_state *p, node *a, mrb_sym b, node *c, int pass) { + if (p->var_nodes_enabled) { + return new_call_var(p, a, b, c, pass); + } node *n = list4(int_to_node(pass?NODE_CALL:NODE_SCALL), a, sym_to_node(b), c); void_expr_error(p, a); return n; } +/* Variable-sized call node creation */ +static node* +new_call_var(parser_state *p, node *receiver, mrb_sym method, node *args, int pass) +{ + /* Analyze the arguments to determine size needed */ + uint8_t argc = 0; + uint8_t has_kwargs = 0; + uint8_t has_block = 0; + node *regular_args = NULL, *kwargs = NULL, *block = NULL; + + if (args) { + regular_args = args->car; + if (args->cdr) { + kwargs = args->cdr->car; + has_kwargs = (kwargs != NULL); + if (args->cdr->cdr) { + block = args->cdr->cdr; + has_block = (block != NULL); + } + } + } + + /* Count regular arguments */ + node *arg_iter = regular_args; + while (arg_iter) { + argc++; + arg_iter = arg_iter->cdr; + } + + /* Calculate total size needed */ + size_t base_size = sizeof(struct mrb_ast_call_node); + size_t args_size = argc * sizeof(struct mrb_ast_node*); + size_t kwargs_size = has_kwargs ? sizeof(struct mrb_ast_node*) : 0; + size_t block_size = has_block ? sizeof(struct mrb_ast_node*) : 0; + size_t total_size = base_size + args_size + kwargs_size + block_size; + + enum mrb_ast_size_class class = size_to_class(total_size); + + struct mrb_ast_call_node *n = (struct mrb_ast_call_node*) + parser_alloc_var(p, total_size, class); + + init_var_header(&n->header, p, pass ? NODE_CALL : NODE_SCALL, class); + n->receiver = receiver; + n->method_name = method; + n->argc = argc; + n->has_kwargs = has_kwargs; + n->has_block = has_block; + n->safe_call = (pass == 2); /* Assuming pass == 2 means safe call (&.) */ + n->reserved = 0; + + /* Copy regular arguments into flexible array */ + arg_iter = regular_args; + for (int i = 0; i < argc; i++) { + n->args[i] = arg_iter->car; + arg_iter = arg_iter->cdr; + } + + /* Add kwargs and block after regular arguments */ + if (has_kwargs) { + n->args[argc] = kwargs; + } + if (has_block) { + n->args[argc + (has_kwargs ? 1 : 0)] = block; + } + + void_expr_error(p, receiver); + return cons_head((node*)NODE_VARIABLE, (node*)n); +} + +/* Variable-sized array node creation */ +static node* +new_array_var(parser_state *p, node *a) +{ + /* Count array elements */ + uint16_t len = 0; + node *elem_iter = a; + while (elem_iter) { + len++; + elem_iter = elem_iter->cdr; + } + + /* Calculate total size needed */ + size_t base_size = sizeof(struct mrb_ast_array_node); + size_t elems_size = len * sizeof(struct mrb_ast_node*); + size_t total_size = base_size + elems_size; + + enum mrb_ast_size_class class = size_to_class(total_size); + + struct mrb_ast_array_node *n = (struct mrb_ast_array_node*) + parser_alloc_var(p, total_size, class); + + init_var_header(&n->header, p, NODE_ARRAY, class); + n->len = len; + n->flags = 0; + + /* Copy elements into flexible array */ + elem_iter = a; + for (int i = 0; i < len; i++) { + n->elements[i] = elem_iter->car; + elem_iter = elem_iter->cdr; + } + + return cons_head((node*)NODE_VARIABLE, (node*)n); +} + +/* Variable-sized hash node creation */ +static node* +new_hash_var(parser_state *p, node *a) +{ + /* Count hash key-value pairs */ + uint16_t len = 0; + node *pair_iter = a; + while (pair_iter) { + len++; + pair_iter = pair_iter->cdr; + } + + /* Calculate total size needed */ + size_t base_size = sizeof(struct mrb_ast_hash_node); + size_t pairs_size = len * 2 * sizeof(struct mrb_ast_node*); /* key and value for each pair */ + size_t total_size = base_size + pairs_size; + + enum mrb_ast_size_class class = size_to_class(total_size); + + struct mrb_ast_hash_node *n = (struct mrb_ast_hash_node*) + parser_alloc_var(p, total_size, class); + + init_var_header(&n->header, p, NODE_HASH, class); + n->len = len; + n->flags = 0; + + /* Copy key-value pairs into flexible array */ + pair_iter = a; + for (int i = 0; i < len; i++) { + if (pair_iter && pair_iter->car) { + /* Each pair is a cons (key . value) */ + node *pair = pair_iter->car; + n->pairs[i * 2] = pair->car; /* key */ + n->pairs[i * 2 + 1] = pair->cdr; /* value */ + } + pair_iter = pair_iter->cdr; + } + + return cons_head((node*)NODE_VARIABLE, (node*)n); +} + /* (:fcall self mid args) */ static node* new_fcall(parser_state *p, mrb_sym b, node *c) @@ -743,6 +897,9 @@ new_or(parser_state *p, node *a, node *b) static node* new_array(parser_state *p, node *a) { + if (p->cxt && p->cxt->use_variable_nodes) { + return new_array_var(p, a); + } return cons_head((node*)NODE_ARRAY, a); } @@ -758,6 +915,9 @@ new_splat(parser_state *p, node *a) static node* new_hash(parser_state *p, node *a) { + if (p->cxt && p->cxt->use_variable_nodes) { + return new_hash_var(p, a); + } return cons_head((node*)NODE_HASH, a); } @@ -6955,7 +7115,7 @@ mrb_parser_new(mrb_state *mrb) p->var_alloc_counts[i] = 0; } p->var_total_allocated = 0; - p->var_nodes_enabled = FALSE; /* Start disabled for compatibility */ + p->var_nodes_enabled = TRUE; /* Enable variable-sized nodes by default */ return p; } diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c index 3f2294587..9d7394715 100644 --- a/mrbgems/mruby-compiler/core/y.tab.c +++ b/mrbgems/mruby-compiler/core/y.tab.c @@ -672,15 +672,169 @@ new_self(parser_state *p) return list1((node*)NODE_SELF); } +/* Forward declaration for variable-sized call node */ +static node* new_call_var(parser_state *p, node *receiver, mrb_sym method, node *args, int pass); +static node* new_array_var(parser_state *p, node *a); +static node* new_hash_var(parser_state *p, node *a); + /* (:call a b c) */ static node* new_call(parser_state *p, node *a, mrb_sym b, node *c, int pass) { + if (p->var_nodes_enabled) { + return new_call_var(p, a, b, c, pass); + } node *n = list4(int_to_node(pass?NODE_CALL:NODE_SCALL), a, sym_to_node(b), c); void_expr_error(p, a); return n; } +/* Variable-sized call node creation */ +static node* +new_call_var(parser_state *p, node *receiver, mrb_sym method, node *args, int pass) +{ + /* Analyze the arguments to determine size needed */ + uint8_t argc = 0; + uint8_t has_kwargs = 0; + uint8_t has_block = 0; + node *regular_args = NULL, *kwargs = NULL, *block = NULL; + + if (args) { + regular_args = args->car; + if (args->cdr) { + kwargs = args->cdr->car; + has_kwargs = (kwargs != NULL); + if (args->cdr->cdr) { + block = args->cdr->cdr; + has_block = (block != NULL); + } + } + } + + /* Count regular arguments */ + node *arg_iter = regular_args; + while (arg_iter) { + argc++; + arg_iter = arg_iter->cdr; + } + + /* Calculate total size needed */ + size_t base_size = sizeof(struct mrb_ast_call_node); + size_t args_size = argc * sizeof(struct mrb_ast_node*); + size_t kwargs_size = has_kwargs ? sizeof(struct mrb_ast_node*) : 0; + size_t block_size = has_block ? sizeof(struct mrb_ast_node*) : 0; + size_t total_size = base_size + args_size + kwargs_size + block_size; + + enum mrb_ast_size_class class = size_to_class(total_size); + + struct mrb_ast_call_node *n = (struct mrb_ast_call_node*) + parser_alloc_var(p, total_size, class); + + init_var_header(&n->header, p, pass ? NODE_CALL : NODE_SCALL, class); + n->receiver = receiver; + n->method_name = method; + n->argc = argc; + n->has_kwargs = has_kwargs; + n->has_block = has_block; + n->safe_call = (pass == 2); /* Assuming pass == 2 means safe call (&.) */ + n->reserved = 0; + + /* Copy regular arguments into flexible array */ + arg_iter = regular_args; + for (int i = 0; i < argc; i++) { + n->args[i] = arg_iter->car; + arg_iter = arg_iter->cdr; + } + + /* Add kwargs and block after regular arguments */ + if (has_kwargs) { + n->args[argc] = kwargs; + } + if (has_block) { + n->args[argc + (has_kwargs ? 1 : 0)] = block; + } + + void_expr_error(p, receiver); + return cons_head((node*)NODE_VARIABLE, (node*)n); +} + +/* Variable-sized array node creation */ +static node* +new_array_var(parser_state *p, node *a) +{ + /* Count array elements */ + uint16_t len = 0; + node *elem_iter = a; + while (elem_iter) { + len++; + elem_iter = elem_iter->cdr; + } + + /* Calculate total size needed */ + size_t base_size = sizeof(struct mrb_ast_array_node); + size_t elems_size = len * sizeof(struct mrb_ast_node*); + size_t total_size = base_size + elems_size; + + enum mrb_ast_size_class class = size_to_class(total_size); + + struct mrb_ast_array_node *n = (struct mrb_ast_array_node*) + parser_alloc_var(p, total_size, class); + + init_var_header(&n->header, p, NODE_ARRAY, class); + n->len = len; + n->flags = 0; + + /* Copy elements into flexible array */ + elem_iter = a; + for (int i = 0; i < len; i++) { + n->elements[i] = elem_iter->car; + elem_iter = elem_iter->cdr; + } + + return cons_head((node*)NODE_VARIABLE, (node*)n); +} + +/* Variable-sized hash node creation */ +static node* +new_hash_var(parser_state *p, node *a) +{ + /* Count hash key-value pairs */ + uint16_t len = 0; + node *pair_iter = a; + while (pair_iter) { + len++; + pair_iter = pair_iter->cdr; + } + + /* Calculate total size needed */ + size_t base_size = sizeof(struct mrb_ast_hash_node); + size_t pairs_size = len * 2 * sizeof(struct mrb_ast_node*); /* key and value for each pair */ + size_t total_size = base_size + pairs_size; + + enum mrb_ast_size_class class = size_to_class(total_size); + + struct mrb_ast_hash_node *n = (struct mrb_ast_hash_node*) + parser_alloc_var(p, total_size, class); + + init_var_header(&n->header, p, NODE_HASH, class); + n->len = len; + n->flags = 0; + + /* Copy key-value pairs into flexible array */ + pair_iter = a; + for (int i = 0; i < len; i++) { + if (pair_iter && pair_iter->car) { + /* Each pair is a cons (key . value) */ + node *pair = pair_iter->car; + n->pairs[i * 2] = pair->car; /* key */ + n->pairs[i * 2 + 1] = pair->cdr; /* value */ + } + pair_iter = pair_iter->cdr; + } + + return cons_head((node*)NODE_VARIABLE, (node*)n); +} + /* (:fcall self mid args) */ static node* new_fcall(parser_state *p, mrb_sym b, node *c) @@ -805,6 +959,9 @@ new_or(parser_state *p, node *a, node *b) static node* new_array(parser_state *p, node *a) { + if (p->cxt && p->cxt->use_variable_nodes) { + return new_array_var(p, a); + } return cons_head((node*)NODE_ARRAY, a); } @@ -820,6 +977,9 @@ new_splat(parser_state *p, node *a) static node* new_hash(parser_state *p, node *a) { + if (p->cxt && p->cxt->use_variable_nodes) { + return new_hash_var(p, a); + } return cons_head((node*)NODE_HASH, a); } @@ -1779,7 +1939,7 @@ prohibit_literals(parser_state *p, node *n) /* xxx ----------------------------- */ -#line 1783 "mrbgems/mruby-compiler/core/y.tab.c" +#line 1943 "mrbgems/mruby-compiler/core/y.tab.c" # ifndef YY_CAST # ifdef __cplusplus @@ -1950,7 +2110,7 @@ extern int yydebug; #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 1726 "mrbgems/mruby-compiler/core/parse.y" +#line 1886 "mrbgems/mruby-compiler/core/parse.y" node *nd; mrb_sym id; @@ -1958,7 +2118,7 @@ union YYSTYPE stack_type stack; const struct vtable *vars; -#line 1962 "mrbgems/mruby-compiler/core/y.tab.c" +#line 2122 "mrbgems/mruby-compiler/core/y.tab.c" }; typedef union YYSTYPE YYSTYPE; @@ -2717,69 +2877,69 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 1897, 1897, 1897, 1907, 1913, 1917, 1921, 1925, 1931, - 1933, 1932, 1946, 1972, 1978, 1982, 1986, 1990, 1996, 1996, - 2000, 2004, 2008, 2012, 2021, 2030, 2034, 2039, 2040, 2044, - 2048, 2052, 2056, 2062, 2065, 2069, 2073, 2077, 2081, 2085, - 2090, 2094, 2103, 2112, 2121, 2130, 2137, 2138, 2142, 2146, - 2147, 2151, 2155, 2159, 2163, 2167, 2177, 2176, 2191, 2200, - 2201, 2204, 2205, 2212, 2211, 2226, 2230, 2235, 2239, 2244, - 2248, 2253, 2257, 2261, 2265, 2269, 2275, 2279, 2285, 2286, - 2292, 2296, 2300, 2304, 2308, 2312, 2316, 2320, 2324, 2328, - 2334, 2335, 2341, 2345, 2351, 2355, 2361, 2365, 2369, 2373, - 2377, 2381, 2387, 2393, 2400, 2404, 2408, 2412, 2416, 2420, - 2426, 2432, 2437, 2443, 2447, 2450, 2454, 2458, 2465, 2466, - 2467, 2468, 2473, 2480, 2481, 2484, 2488, 2488, 2494, 2495, - 2496, 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505, - 2506, 2507, 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, - 2516, 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2526, 2526, - 2526, 2527, 2527, 2528, 2528, 2528, 2529, 2529, 2529, 2529, - 2530, 2530, 2530, 2531, 2531, 2531, 2532, 2532, 2532, 2532, - 2533, 2533, 2533, 2533, 2534, 2534, 2534, 2534, 2535, 2535, - 2535, 2535, 2536, 2536, 2536, 2536, 2537, 2537, 2540, 2544, - 2548, 2552, 2556, 2560, 2564, 2569, 2574, 2579, 2583, 2587, - 2591, 2595, 2599, 2603, 2607, 2611, 2615, 2619, 2623, 2627, - 2631, 2635, 2639, 2643, 2647, 2651, 2655, 2659, 2663, 2667, - 2671, 2675, 2679, 2683, 2687, 2691, 2695, 2699, 2703, 2707, - 2711, 2715, 2719, 2723, 2727, 2736, 2745, 2754, 2763, 2769, - 2770, 2774, 2778, 2784, 2788, 2795, 2799, 2808, 2825, 2826, - 2829, 2830, 2831, 2835, 2839, 2845, 2850, 2854, 2858, 2862, - 2868, 2868, 2879, 2883, 2889, 2893, 2899, 2902, 2907, 2911, - 2915, 2920, 2924, 2930, 2935, 2939, 2945, 2946, 2947, 2948, - 2949, 2950, 2951, 2952, 2957, 2956, 2968, 2972, 2967, 2977, - 2977, 2981, 2985, 2989, 2993, 2997, 3001, 3005, 3009, 3013, - 3017, 3021, 3022, 3028, 3035, 3027, 3048, 3056, 3064, 3064, - 3064, 3071, 3071, 3071, 3078, 3084, 3089, 3091, 3088, 3100, - 3098, 3116, 3121, 3114, 3138, 3136, 3152, 3162, 3173, 3177, - 3181, 3185, 3191, 3198, 3199, 3200, 3203, 3204, 3207, 3208, - 3216, 3217, 3223, 3227, 3230, 3234, 3238, 3242, 3247, 3251, - 3255, 3259, 3265, 3264, 3274, 3278, 3282, 3286, 3292, 3297, - 3302, 3306, 3310, 3314, 3318, 3322, 3326, 3330, 3334, 3338, - 3342, 3346, 3350, 3354, 3358, 3364, 3369, 3376, 3376, 3380, - 3385, 3392, 3396, 3402, 3403, 3406, 3411, 3414, 3418, 3424, - 3428, 3435, 3434, 3451, 3461, 3465, 3470, 3477, 3481, 3485, - 3489, 3493, 3497, 3501, 3505, 3509, 3516, 3515, 3530, 3529, - 3545, 3553, 3562, 3565, 3572, 3575, 3579, 3580, 3583, 3587, - 3590, 3594, 3597, 3598, 3599, 3600, 3603, 3604, 3610, 3611, - 3612, 3616, 3629, 3630, 3636, 3641, 3640, 3650, 3654, 3660, - 3664, 3677, 3681, 3687, 3690, 3691, 3694, 3700, 3706, 3707, - 3710, 3717, 3716, 3729, 3733, 3747, 3751, 3763, 3770, 3777, - 3778, 3779, 3780, 3781, 3785, 3791, 3795, 3805, 3806, 3807, - 3811, 3817, 3821, 3825, 3829, 3833, 3839, 3843, 3849, 3853, - 3857, 3861, 3865, 3869, 3873, 3881, 3888, 3894, 3895, 3899, - 3903, 3902, 3919, 3920, 3923, 3929, 3933, 3939, 3940, 3944, - 3948, 3954, 3958, 3964, 3970, 3977, 3983, 3990, 3994, 4000, - 4004, 4010, 4011, 4014, 4018, 4024, 4028, 4032, 4036, 4042, - 4047, 4052, 4056, 4060, 4064, 4068, 4072, 4076, 4080, 4084, - 4088, 4092, 4096, 4100, 4104, 4109, 4115, 4120, 4125, 4130, - 4135, 4142, 4146, 4153, 4158, 4157, 4169, 4173, 4179, 4187, - 4195, 4203, 4207, 4213, 4217, 4223, 4224, 4227, 4232, 4239, - 4240, 4243, 4247, 4253, 4257, 4263, 4269, 4269, 4276, 4277, - 4283, 4287, 4293, 4299, 4304, 4308, 4313, 4318, 4328, 4333, - 4339, 4340, 4341, 4344, 4345, 4346, 4347, 4350, 4351, 4352, - 4355, 4356, 4359, 4363, 4369, 4370, 4376, 4377, 4380, 4381, - 4384, 4387, 4388, 4389, 4392, 4393, 4396, 4401, 4404, 4405, - 4409 + 0, 2057, 2057, 2057, 2067, 2073, 2077, 2081, 2085, 2091, + 2093, 2092, 2106, 2132, 2138, 2142, 2146, 2150, 2156, 2156, + 2160, 2164, 2168, 2172, 2181, 2190, 2194, 2199, 2200, 2204, + 2208, 2212, 2216, 2222, 2225, 2229, 2233, 2237, 2241, 2245, + 2250, 2254, 2263, 2272, 2281, 2290, 2297, 2298, 2302, 2306, + 2307, 2311, 2315, 2319, 2323, 2327, 2337, 2336, 2351, 2360, + 2361, 2364, 2365, 2372, 2371, 2386, 2390, 2395, 2399, 2404, + 2408, 2413, 2417, 2421, 2425, 2429, 2435, 2439, 2445, 2446, + 2452, 2456, 2460, 2464, 2468, 2472, 2476, 2480, 2484, 2488, + 2494, 2495, 2501, 2505, 2511, 2515, 2521, 2525, 2529, 2533, + 2537, 2541, 2547, 2553, 2560, 2564, 2568, 2572, 2576, 2580, + 2586, 2592, 2597, 2603, 2607, 2610, 2614, 2618, 2625, 2626, + 2627, 2628, 2633, 2640, 2641, 2644, 2648, 2648, 2654, 2655, + 2656, 2657, 2658, 2659, 2660, 2661, 2662, 2663, 2664, 2665, + 2666, 2667, 2668, 2669, 2670, 2671, 2672, 2673, 2674, 2675, + 2676, 2677, 2678, 2679, 2680, 2681, 2682, 2683, 2686, 2686, + 2686, 2687, 2687, 2688, 2688, 2688, 2689, 2689, 2689, 2689, + 2690, 2690, 2690, 2691, 2691, 2691, 2692, 2692, 2692, 2692, + 2693, 2693, 2693, 2693, 2694, 2694, 2694, 2694, 2695, 2695, + 2695, 2695, 2696, 2696, 2696, 2696, 2697, 2697, 2700, 2704, + 2708, 2712, 2716, 2720, 2724, 2729, 2734, 2739, 2743, 2747, + 2751, 2755, 2759, 2763, 2767, 2771, 2775, 2779, 2783, 2787, + 2791, 2795, 2799, 2803, 2807, 2811, 2815, 2819, 2823, 2827, + 2831, 2835, 2839, 2843, 2847, 2851, 2855, 2859, 2863, 2867, + 2871, 2875, 2879, 2883, 2887, 2896, 2905, 2914, 2923, 2929, + 2930, 2934, 2938, 2944, 2948, 2955, 2959, 2968, 2985, 2986, + 2989, 2990, 2991, 2995, 2999, 3005, 3010, 3014, 3018, 3022, + 3028, 3028, 3039, 3043, 3049, 3053, 3059, 3062, 3067, 3071, + 3075, 3080, 3084, 3090, 3095, 3099, 3105, 3106, 3107, 3108, + 3109, 3110, 3111, 3112, 3117, 3116, 3128, 3132, 3127, 3137, + 3137, 3141, 3145, 3149, 3153, 3157, 3161, 3165, 3169, 3173, + 3177, 3181, 3182, 3188, 3195, 3187, 3208, 3216, 3224, 3224, + 3224, 3231, 3231, 3231, 3238, 3244, 3249, 3251, 3248, 3260, + 3258, 3276, 3281, 3274, 3298, 3296, 3312, 3322, 3333, 3337, + 3341, 3345, 3351, 3358, 3359, 3360, 3363, 3364, 3367, 3368, + 3376, 3377, 3383, 3387, 3390, 3394, 3398, 3402, 3407, 3411, + 3415, 3419, 3425, 3424, 3434, 3438, 3442, 3446, 3452, 3457, + 3462, 3466, 3470, 3474, 3478, 3482, 3486, 3490, 3494, 3498, + 3502, 3506, 3510, 3514, 3518, 3524, 3529, 3536, 3536, 3540, + 3545, 3552, 3556, 3562, 3563, 3566, 3571, 3574, 3578, 3584, + 3588, 3595, 3594, 3611, 3621, 3625, 3630, 3637, 3641, 3645, + 3649, 3653, 3657, 3661, 3665, 3669, 3676, 3675, 3690, 3689, + 3705, 3713, 3722, 3725, 3732, 3735, 3739, 3740, 3743, 3747, + 3750, 3754, 3757, 3758, 3759, 3760, 3763, 3764, 3770, 3771, + 3772, 3776, 3789, 3790, 3796, 3801, 3800, 3810, 3814, 3820, + 3824, 3837, 3841, 3847, 3850, 3851, 3854, 3860, 3866, 3867, + 3870, 3877, 3876, 3889, 3893, 3907, 3911, 3923, 3930, 3937, + 3938, 3939, 3940, 3941, 3945, 3951, 3955, 3965, 3966, 3967, + 3971, 3977, 3981, 3985, 3989, 3993, 3999, 4003, 4009, 4013, + 4017, 4021, 4025, 4029, 4033, 4041, 4048, 4054, 4055, 4059, + 4063, 4062, 4079, 4080, 4083, 4089, 4093, 4099, 4100, 4104, + 4108, 4114, 4118, 4124, 4130, 4137, 4143, 4150, 4154, 4160, + 4164, 4170, 4171, 4174, 4178, 4184, 4188, 4192, 4196, 4202, + 4207, 4212, 4216, 4220, 4224, 4228, 4232, 4236, 4240, 4244, + 4248, 4252, 4256, 4260, 4264, 4269, 4275, 4280, 4285, 4290, + 4295, 4302, 4306, 4313, 4318, 4317, 4329, 4333, 4339, 4347, + 4355, 4363, 4367, 4373, 4377, 4383, 4384, 4387, 4392, 4399, + 4400, 4403, 4407, 4413, 4417, 4423, 4429, 4429, 4436, 4437, + 4443, 4447, 4453, 4459, 4464, 4468, 4473, 4478, 4488, 4493, + 4499, 4500, 4501, 4504, 4505, 4506, 4507, 4510, 4511, 4512, + 4515, 4516, 4519, 4523, 4529, 4530, 4536, 4537, 4540, 4541, + 4544, 4547, 4548, 4549, 4552, 4553, 4556, 4561, 4564, 4565, + 4569 }; #endif @@ -6756,7 +6916,7 @@ YYLTYPE yylloc = yyloc_default; -#line 6760 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6920 "mrbgems/mruby-compiler/core/y.tab.c" yylsp[0] = yylloc; goto yysetstate; @@ -6969,84 +7129,84 @@ yyreduce: switch (yyn) { case 2: /* $@1: %empty */ -#line 1897 "mrbgems/mruby-compiler/core/parse.y" +#line 2057 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_BEG; if (!p->locals) p->locals = cons(0,0); } -#line 6978 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7138 "mrbgems/mruby-compiler/core/y.tab.c" break; case 3: /* program: $@1 top_compstmt */ -#line 1902 "mrbgems/mruby-compiler/core/parse.y" +#line 2062 "mrbgems/mruby-compiler/core/parse.y" { p->tree = new_scope(p, (yyvsp[0].nd)); } -#line 6986 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7146 "mrbgems/mruby-compiler/core/y.tab.c" break; case 4: /* top_compstmt: top_stmts opt_terms */ -#line 1908 "mrbgems/mruby-compiler/core/parse.y" +#line 2068 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 6994 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7154 "mrbgems/mruby-compiler/core/y.tab.c" break; case 5: /* top_stmts: none */ -#line 1914 "mrbgems/mruby-compiler/core/parse.y" +#line 2074 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_stmts(p, 0); } -#line 7002 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7162 "mrbgems/mruby-compiler/core/y.tab.c" break; case 6: /* top_stmts: top_stmt */ -#line 1918 "mrbgems/mruby-compiler/core/parse.y" +#line 2078 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_stmts(p, (yyvsp[0].nd)); } -#line 7010 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7170 "mrbgems/mruby-compiler/core/y.tab.c" break; case 7: /* top_stmts: top_stmts terms top_stmt */ -#line 1922 "mrbgems/mruby-compiler/core/parse.y" +#line 2082 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), newline_node((yyvsp[0].nd))); } -#line 7018 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7178 "mrbgems/mruby-compiler/core/y.tab.c" break; case 8: /* top_stmts: error top_stmt */ -#line 1926 "mrbgems/mruby-compiler/core/parse.y" +#line 2086 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_stmts(p, 0); } -#line 7026 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7186 "mrbgems/mruby-compiler/core/y.tab.c" break; case 10: /* @2: %empty */ -#line 1933 "mrbgems/mruby-compiler/core/parse.y" +#line 2093 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = local_switch(p); nvars_block(p); } -#line 7035 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7195 "mrbgems/mruby-compiler/core/y.tab.c" break; case 11: /* top_stmt: "'BEGIN'" @2 '{' top_compstmt '}' */ -#line 1938 "mrbgems/mruby-compiler/core/parse.y" +#line 2098 "mrbgems/mruby-compiler/core/parse.y" { yyerror(&(yylsp[-4]), p, "BEGIN not supported"); local_resume(p, (yyvsp[-3].nd)); nvars_unnest(p); (yyval.nd) = 0; } -#line 7046 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7206 "mrbgems/mruby-compiler/core/y.tab.c" break; case 12: /* bodystmt: compstmt opt_rescue opt_else opt_ensure */ -#line 1950 "mrbgems/mruby-compiler/core/parse.y" +#line 2110 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[-2].nd)) { (yyval.nd) = new_rescue(p, (yyvsp[-3].nd), (yyvsp[-2].nd), (yyvsp[-1].nd)); @@ -7067,89 +7227,89 @@ yyreduce: } } } -#line 7071 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7231 "mrbgems/mruby-compiler/core/y.tab.c" break; case 13: /* compstmt: stmts opt_terms */ -#line 1973 "mrbgems/mruby-compiler/core/parse.y" +#line 2133 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 7079 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7239 "mrbgems/mruby-compiler/core/y.tab.c" break; case 14: /* stmts: none */ -#line 1979 "mrbgems/mruby-compiler/core/parse.y" +#line 2139 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_stmts(p, 0); } -#line 7087 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7247 "mrbgems/mruby-compiler/core/y.tab.c" break; case 15: /* stmts: stmt */ -#line 1983 "mrbgems/mruby-compiler/core/parse.y" +#line 2143 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_stmts(p, (yyvsp[0].nd)); } -#line 7095 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7255 "mrbgems/mruby-compiler/core/y.tab.c" break; case 16: /* stmts: stmts terms stmt */ -#line 1987 "mrbgems/mruby-compiler/core/parse.y" +#line 2147 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), newline_node((yyvsp[0].nd))); } -#line 7103 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7263 "mrbgems/mruby-compiler/core/y.tab.c" break; case 17: /* stmts: error stmt */ -#line 1991 "mrbgems/mruby-compiler/core/parse.y" +#line 2151 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_stmts(p, (yyvsp[0].nd)); } -#line 7111 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7271 "mrbgems/mruby-compiler/core/y.tab.c" break; case 18: /* $@3: %empty */ -#line 1996 "mrbgems/mruby-compiler/core/parse.y" +#line 2156 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_FNAME;} -#line 7117 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7277 "mrbgems/mruby-compiler/core/y.tab.c" break; case 19: /* stmt: "'alias'" fsym $@3 fsym */ -#line 1997 "mrbgems/mruby-compiler/core/parse.y" +#line 2157 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_alias(p, (yyvsp[-2].id), (yyvsp[0].id)); } -#line 7125 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7285 "mrbgems/mruby-compiler/core/y.tab.c" break; case 20: /* stmt: "'undef'" undef_list */ -#line 2001 "mrbgems/mruby-compiler/core/parse.y" +#line 2161 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 7133 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7293 "mrbgems/mruby-compiler/core/y.tab.c" break; case 21: /* stmt: stmt "'if' modifier" expr_value */ -#line 2005 "mrbgems/mruby-compiler/core/parse.y" +#line 2165 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd), 0); } -#line 7141 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7301 "mrbgems/mruby-compiler/core/y.tab.c" break; case 22: /* stmt: stmt "'unless' modifier" expr_value */ -#line 2009 "mrbgems/mruby-compiler/core/parse.y" +#line 2169 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_unless(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd), 0); } -#line 7149 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7309 "mrbgems/mruby-compiler/core/y.tab.c" break; case 23: /* stmt: stmt "'while' modifier" expr_value */ -#line 2013 "mrbgems/mruby-compiler/core/parse.y" +#line 2173 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[-2].nd) && node_to_type((yyvsp[-2].nd)->car) == NODE_BEGIN) { (yyval.nd) = new_while_mod(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd)); @@ -7158,11 +7318,11 @@ yyreduce: (yyval.nd) = new_while(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd)); } } -#line 7162 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7322 "mrbgems/mruby-compiler/core/y.tab.c" break; case 24: /* stmt: stmt "'until' modifier" expr_value */ -#line 2022 "mrbgems/mruby-compiler/core/parse.y" +#line 2182 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[-2].nd) && node_to_type((yyvsp[-2].nd)->car) == NODE_BEGIN) { (yyval.nd) = new_until_mod(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd)); @@ -7171,127 +7331,127 @@ yyreduce: (yyval.nd) = new_until(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd)); } } -#line 7175 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7335 "mrbgems/mruby-compiler/core/y.tab.c" break; case 25: /* stmt: stmt "'rescue' modifier" stmt */ -#line 2031 "mrbgems/mruby-compiler/core/parse.y" +#line 2191 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7183 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7343 "mrbgems/mruby-compiler/core/y.tab.c" break; case 26: /* stmt: "'END'" '{' compstmt '}' */ -#line 2035 "mrbgems/mruby-compiler/core/parse.y" +#line 2195 "mrbgems/mruby-compiler/core/parse.y" { yyerror(&(yylsp[-3]), p, "END not supported"); (yyval.nd) = new_postexe(p, (yyvsp[-1].nd)); } -#line 7192 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7352 "mrbgems/mruby-compiler/core/y.tab.c" break; case 28: /* stmt: mlhs '=' command_call */ -#line 2041 "mrbgems/mruby-compiler/core/parse.y" +#line 2201 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7200 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7360 "mrbgems/mruby-compiler/core/y.tab.c" break; case 29: /* stmt: lhs '=' mrhs */ -#line 2045 "mrbgems/mruby-compiler/core/parse.y" +#line 2205 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), new_array(p, (yyvsp[0].nd))); } -#line 7208 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7368 "mrbgems/mruby-compiler/core/y.tab.c" break; case 30: /* stmt: mlhs '=' arg */ -#line 2049 "mrbgems/mruby-compiler/core/parse.y" +#line 2209 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7216 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7376 "mrbgems/mruby-compiler/core/y.tab.c" break; case 31: /* stmt: mlhs '=' mrhs */ -#line 2053 "mrbgems/mruby-compiler/core/parse.y" +#line 2213 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), new_array(p, (yyvsp[0].nd))); } -#line 7224 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7384 "mrbgems/mruby-compiler/core/y.tab.c" break; case 32: /* stmt: arg "=>" "local variable or method" */ -#line 2057 "mrbgems/mruby-compiler/core/parse.y" +#line 2217 "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 7234 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7394 "mrbgems/mruby-compiler/core/y.tab.c" break; case 34: /* command_asgn: lhs '=' command_rhs */ -#line 2066 "mrbgems/mruby-compiler/core/parse.y" +#line 2226 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7242 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7402 "mrbgems/mruby-compiler/core/y.tab.c" break; case 35: /* command_asgn: var_lhs tOP_ASGN command_rhs */ -#line 2070 "mrbgems/mruby-compiler/core/parse.y" +#line 2230 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, (yyvsp[-2].nd), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 7250 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7410 "mrbgems/mruby-compiler/core/y.tab.c" break; case 36: /* command_asgn: primary_value '[' opt_call_args ']' tOP_ASGN command_rhs */ -#line 2074 "mrbgems/mruby-compiler/core/parse.y" +#line 2234 "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 7258 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7418 "mrbgems/mruby-compiler/core/y.tab.c" break; case 37: /* command_asgn: primary_value call_op "local variable or method" tOP_ASGN command_rhs */ -#line 2078 "mrbgems/mruby-compiler/core/parse.y" +#line 2238 "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 7266 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7426 "mrbgems/mruby-compiler/core/y.tab.c" break; case 38: /* command_asgn: primary_value call_op "constant" tOP_ASGN command_rhs */ -#line 2082 "mrbgems/mruby-compiler/core/parse.y" +#line 2242 "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 7274 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7434 "mrbgems/mruby-compiler/core/y.tab.c" break; case 39: /* command_asgn: primary_value "::" "constant" tOP_ASGN command_call */ -#line 2086 "mrbgems/mruby-compiler/core/parse.y" +#line 2246 "mrbgems/mruby-compiler/core/parse.y" { yyerror(&(yylsp[-4]), p, "constant re-assignment"); (yyval.nd) = 0; } -#line 7283 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7443 "mrbgems/mruby-compiler/core/y.tab.c" break; case 40: /* command_asgn: primary_value "::" "local variable or method" tOP_ASGN command_rhs */ -#line 2091 "mrbgems/mruby-compiler/core/parse.y" +#line 2251 "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 7291 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7451 "mrbgems/mruby-compiler/core/y.tab.c" break; case 41: /* command_asgn: defn_head f_opt_arglist_paren '=' command */ -#line 2095 "mrbgems/mruby-compiler/core/parse.y" +#line 2255 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-3].nd); endless_method_name(p, (yyvsp[-3].nd)); @@ -7300,11 +7460,11 @@ yyreduce: nvars_unnest(p); p->in_def--; } -#line 7304 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7464 "mrbgems/mruby-compiler/core/y.tab.c" break; case 42: /* command_asgn: defn_head f_opt_arglist_paren '=' command "'rescue' modifier" arg */ -#line 2104 "mrbgems/mruby-compiler/core/parse.y" +#line 2264 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-5].nd); endless_method_name(p, (yyvsp[-5].nd)); @@ -7313,11 +7473,11 @@ yyreduce: nvars_unnest(p); p->in_def--; } -#line 7317 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7477 "mrbgems/mruby-compiler/core/y.tab.c" break; case 43: /* command_asgn: defs_head f_opt_arglist_paren '=' command */ -#line 2113 "mrbgems/mruby-compiler/core/parse.y" +#line 2273 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-3].nd); void_expr_error(p, (yyvsp[0].nd)); @@ -7326,11 +7486,11 @@ yyreduce: p->in_def--; p->in_single--; } -#line 7330 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7490 "mrbgems/mruby-compiler/core/y.tab.c" break; case 44: /* command_asgn: defs_head f_opt_arglist_paren '=' command "'rescue' modifier" arg */ -#line 2122 "mrbgems/mruby-compiler/core/parse.y" +#line 2282 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-5].nd); void_expr_error(p, (yyvsp[-2].nd)); @@ -7339,79 +7499,79 @@ yyreduce: p->in_def--; p->in_single--; } -#line 7343 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7503 "mrbgems/mruby-compiler/core/y.tab.c" break; case 45: /* command_asgn: backref tOP_ASGN command_rhs */ -#line 2131 "mrbgems/mruby-compiler/core/parse.y" +#line 2291 "mrbgems/mruby-compiler/core/parse.y" { backref_error(p, (yyvsp[-2].nd)); (yyval.nd) = new_stmts(p, 0); } -#line 7352 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7512 "mrbgems/mruby-compiler/core/y.tab.c" break; case 47: /* command_rhs: command_call "'rescue' modifier" stmt */ -#line 2139 "mrbgems/mruby-compiler/core/parse.y" +#line 2299 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7360 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7520 "mrbgems/mruby-compiler/core/y.tab.c" break; case 50: /* expr: expr "'and'" expr */ -#line 2148 "mrbgems/mruby-compiler/core/parse.y" +#line 2308 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7368 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7528 "mrbgems/mruby-compiler/core/y.tab.c" break; case 51: /* expr: expr "'or'" expr */ -#line 2152 "mrbgems/mruby-compiler/core/parse.y" +#line 2312 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7376 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7536 "mrbgems/mruby-compiler/core/y.tab.c" break; case 52: /* expr: "'not'" opt_nl expr */ -#line 2156 "mrbgems/mruby-compiler/core/parse.y" +#line 2316 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); } -#line 7384 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7544 "mrbgems/mruby-compiler/core/y.tab.c" break; case 53: /* expr: '!' command_call */ -#line 2160 "mrbgems/mruby-compiler/core/parse.y" +#line 2320 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); } -#line 7392 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7552 "mrbgems/mruby-compiler/core/y.tab.c" break; case 55: /* defn_head: "'def'" fname */ -#line 2168 "mrbgems/mruby-compiler/core/parse.y" +#line 2328 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_def(p, (yyvsp[0].id), int_to_node(p->cmdarg_stack), local_switch(p)); p->cmdarg_stack = 0; p->in_def++; nvars_block(p); } -#line 7403 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7563 "mrbgems/mruby-compiler/core/y.tab.c" break; case 56: /* $@4: %empty */ -#line 2177 "mrbgems/mruby-compiler/core/parse.y" +#line 2337 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_FNAME; } -#line 7411 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7571 "mrbgems/mruby-compiler/core/y.tab.c" break; case 57: /* defs_head: "'def'" singleton dot_or_colon $@4 fname */ -#line 2181 "mrbgems/mruby-compiler/core/parse.y" +#line 2341 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_sdef(p, (yyvsp[-3].nd), (yyvsp[0].id), int_to_node(p->cmdarg_stack), local_switch(p)); p->cmdarg_stack = 0; @@ -7420,1054 +7580,1054 @@ yyreduce: nvars_block(p); p->lstate = EXPR_ENDFN; /* force for args */ } -#line 7424 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7584 "mrbgems/mruby-compiler/core/y.tab.c" break; case 58: /* expr_value: expr */ -#line 2192 "mrbgems/mruby-compiler/core/parse.y" +#line 2352 "mrbgems/mruby-compiler/core/parse.y" { if (!(yyvsp[0].nd)) (yyval.nd) = new_nil(p); else { (yyval.nd) = (yyvsp[0].nd); } } -#line 7435 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7595 "mrbgems/mruby-compiler/core/y.tab.c" break; case 62: /* block_command: block_call call_op2 operation2 command_args */ -#line 2206 "mrbgems/mruby-compiler/core/parse.y" +#line 2366 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 7443 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7603 "mrbgems/mruby-compiler/core/y.tab.c" break; case 63: /* $@5: %empty */ -#line 2212 "mrbgems/mruby-compiler/core/parse.y" +#line 2372 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); } -#line 7452 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7612 "mrbgems/mruby-compiler/core/y.tab.c" break; case 64: /* cmd_brace_block: "{" $@5 opt_block_param compstmt '}' */ -#line 2219 "mrbgems/mruby-compiler/core/parse.y" +#line 2379 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p, (yyvsp[-2].nd), (yyvsp[-1].nd)); local_unnest(p); nvars_unnest(p); } -#line 7462 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7622 "mrbgems/mruby-compiler/core/y.tab.c" break; case 65: /* command: operation command_args */ -#line 2227 "mrbgems/mruby-compiler/core/parse.y" +#line 2387 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 7470 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7630 "mrbgems/mruby-compiler/core/y.tab.c" break; case 66: /* command: operation command_args cmd_brace_block */ -#line 2231 "mrbgems/mruby-compiler/core/parse.y" +#line 2391 "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 7479 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7639 "mrbgems/mruby-compiler/core/y.tab.c" break; case 67: /* command: primary_value call_op operation2 command_args */ -#line 2236 "mrbgems/mruby-compiler/core/parse.y" +#line 2396 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 7487 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7647 "mrbgems/mruby-compiler/core/y.tab.c" break; case 68: /* command: primary_value call_op operation2 command_args cmd_brace_block */ -#line 2240 "mrbgems/mruby-compiler/core/parse.y" +#line 2400 "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 7496 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7656 "mrbgems/mruby-compiler/core/y.tab.c" break; case 69: /* command: primary_value "::" operation2 command_args */ -#line 2245 "mrbgems/mruby-compiler/core/parse.y" +#line 2405 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2); } -#line 7504 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7664 "mrbgems/mruby-compiler/core/y.tab.c" break; case 70: /* command: primary_value "::" operation2 command_args cmd_brace_block */ -#line 2249 "mrbgems/mruby-compiler/core/parse.y" +#line 2409 "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 7513 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 71: /* command: "'super'" command_args */ -#line 2254 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_super(p, (yyvsp[0].nd)); - } -#line 7521 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 72: /* command: "'yield'" command_args */ -#line 2258 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_yield(p, (yyvsp[0].nd)); - } -#line 7529 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 73: /* command: "'return'" call_args */ -#line 2262 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_return(p, ret_args(p, (yyvsp[0].nd))); - } -#line 7537 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 74: /* command: "'break'" call_args */ -#line 2266 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_break(p, ret_args(p, (yyvsp[0].nd))); - } -#line 7545 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 75: /* command: "'next'" call_args */ -#line 2270 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_next(p, ret_args(p, (yyvsp[0].nd))); - } -#line 7553 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 76: /* mlhs: mlhs_basic */ -#line 2276 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 7561 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 77: /* mlhs: tLPAREN mlhs_inner rparen */ -#line 2280 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 7569 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 79: /* mlhs_inner: tLPAREN mlhs_inner rparen */ -#line 2287 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 7577 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 80: /* mlhs_basic: mlhs_list */ -#line 2293 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1((yyvsp[0].nd)); - } -#line 7585 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 81: /* mlhs_basic: mlhs_list mlhs_item */ -#line 2297 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1(push((yyvsp[-1].nd),(yyvsp[0].nd))); - } -#line 7593 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 82: /* mlhs_basic: mlhs_list "*" mlhs_node */ -#line 2301 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list2((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 7601 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 83: /* mlhs_basic: mlhs_list "*" mlhs_node ',' mlhs_post */ -#line 2305 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list3((yyvsp[-4].nd), (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 7609 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 84: /* mlhs_basic: mlhs_list "*" */ -#line 2309 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list2((yyvsp[-1].nd), new_nil(p)); - } -#line 7617 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 85: /* mlhs_basic: mlhs_list "*" ',' mlhs_post */ -#line 2313 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list3((yyvsp[-3].nd), new_nil(p), (yyvsp[0].nd)); - } -#line 7625 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 86: /* mlhs_basic: "*" mlhs_node */ -#line 2317 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list2(0, (yyvsp[0].nd)); - } -#line 7633 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 87: /* mlhs_basic: "*" mlhs_node ',' mlhs_post */ -#line 2321 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list3(0, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 7641 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 88: /* mlhs_basic: "*" */ -#line 2325 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list2(0, new_nil(p)); - } -#line 7649 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 89: /* mlhs_basic: "*" ',' mlhs_post */ -#line 2329 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list3(0, new_nil(p), (yyvsp[0].nd)); - } -#line 7657 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 91: /* mlhs_item: tLPAREN mlhs_inner rparen */ -#line 2336 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_masgn(p, (yyvsp[-1].nd), NULL); - } -#line 7665 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 92: /* mlhs_list: mlhs_item ',' */ -#line 2342 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1((yyvsp[-1].nd)); - } #line 7673 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 93: /* mlhs_list: mlhs_list mlhs_item ',' */ -#line 2346 "mrbgems/mruby-compiler/core/parse.y" + case 71: /* command: "'super'" command_args */ +#line 2414 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[-1].nd)); + (yyval.nd) = new_super(p, (yyvsp[0].nd)); } #line 7681 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 94: /* mlhs_post: mlhs_item */ -#line 2352 "mrbgems/mruby-compiler/core/parse.y" + case 72: /* command: "'yield'" command_args */ +#line 2418 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list1((yyvsp[0].nd)); + (yyval.nd) = new_yield(p, (yyvsp[0].nd)); } #line 7689 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 95: /* mlhs_post: mlhs_list mlhs_item */ -#line 2356 "mrbgems/mruby-compiler/core/parse.y" + case 73: /* command: "'return'" call_args */ +#line 2422 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = push((yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_return(p, ret_args(p, (yyvsp[0].nd))); } #line 7697 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 96: /* mlhs_node: variable */ -#line 2362 "mrbgems/mruby-compiler/core/parse.y" + case 74: /* command: "'break'" call_args */ +#line 2426 "mrbgems/mruby-compiler/core/parse.y" { - assignable(p, (yyvsp[0].nd)); + (yyval.nd) = new_break(p, ret_args(p, (yyvsp[0].nd))); } #line 7705 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 97: /* mlhs_node: primary_value '[' opt_call_args ']' */ -#line 2366 "mrbgems/mruby-compiler/core/parse.y" + case 75: /* command: "'next'" call_args */ +#line 2430 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.'); + (yyval.nd) = new_next(p, ret_args(p, (yyvsp[0].nd))); } #line 7713 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 98: /* mlhs_node: primary_value call_op "local variable or method" */ -#line 2370 "mrbgems/mruby-compiler/core/parse.y" + case 76: /* mlhs: mlhs_basic */ +#line 2436 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); + (yyval.nd) = (yyvsp[0].nd); } #line 7721 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 99: /* mlhs_node: primary_value "::" "local variable or method" */ -#line 2374 "mrbgems/mruby-compiler/core/parse.y" + case 77: /* mlhs: tLPAREN mlhs_inner rparen */ +#line 2440 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); + (yyval.nd) = (yyvsp[-1].nd); } #line 7729 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 100: /* mlhs_node: primary_value call_op "constant" */ -#line 2378 "mrbgems/mruby-compiler/core/parse.y" + case 79: /* mlhs_inner: tLPAREN mlhs_inner rparen */ +#line 2447 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); + (yyval.nd) = (yyvsp[-1].nd); } #line 7737 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 101: /* mlhs_node: primary_value "::" "constant" */ -#line 2382 "mrbgems/mruby-compiler/core/parse.y" + case 80: /* mlhs_basic: mlhs_list */ +#line 2453 "mrbgems/mruby-compiler/core/parse.y" { - if (p->in_def || p->in_single) - yyerror(&(yylsp[-2]), p, "dynamic constant assignment"); - (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); + (yyval.nd) = list1((yyvsp[0].nd)); } -#line 7747 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7745 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 102: /* mlhs_node: tCOLON3 "constant" */ -#line 2388 "mrbgems/mruby-compiler/core/parse.y" + case 81: /* mlhs_basic: mlhs_list mlhs_item */ +#line 2457 "mrbgems/mruby-compiler/core/parse.y" { - if (p->in_def || p->in_single) - yyerror(&(yylsp[-1]), p, "dynamic constant assignment"); - (yyval.nd) = new_colon3(p, (yyvsp[0].id)); + (yyval.nd) = list1(push((yyvsp[-1].nd),(yyvsp[0].nd))); } -#line 7757 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7753 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 103: /* mlhs_node: backref */ -#line 2394 "mrbgems/mruby-compiler/core/parse.y" + case 82: /* mlhs_basic: mlhs_list "*" mlhs_node */ +#line 2461 "mrbgems/mruby-compiler/core/parse.y" { - backref_error(p, (yyvsp[0].nd)); - (yyval.nd) = 0; + (yyval.nd) = list2((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7766 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7761 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 104: /* lhs: variable */ -#line 2401 "mrbgems/mruby-compiler/core/parse.y" + case 83: /* mlhs_basic: mlhs_list "*" mlhs_node ',' mlhs_post */ +#line 2465 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = list3((yyvsp[-4].nd), (yyvsp[-2].nd), (yyvsp[0].nd)); + } +#line 7769 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 84: /* mlhs_basic: mlhs_list "*" */ +#line 2469 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = list2((yyvsp[-1].nd), new_nil(p)); + } +#line 7777 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 85: /* mlhs_basic: mlhs_list "*" ',' mlhs_post */ +#line 2473 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = list3((yyvsp[-3].nd), new_nil(p), (yyvsp[0].nd)); + } +#line 7785 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 86: /* mlhs_basic: "*" mlhs_node */ +#line 2477 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = list2(0, (yyvsp[0].nd)); + } +#line 7793 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 87: /* mlhs_basic: "*" mlhs_node ',' mlhs_post */ +#line 2481 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = list3(0, (yyvsp[-2].nd), (yyvsp[0].nd)); + } +#line 7801 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 88: /* mlhs_basic: "*" */ +#line 2485 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = list2(0, new_nil(p)); + } +#line 7809 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 89: /* mlhs_basic: "*" ',' mlhs_post */ +#line 2489 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = list3(0, new_nil(p), (yyvsp[0].nd)); + } +#line 7817 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 91: /* mlhs_item: tLPAREN mlhs_inner rparen */ +#line 2496 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_masgn(p, (yyvsp[-1].nd), NULL); + } +#line 7825 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 92: /* mlhs_list: mlhs_item ',' */ +#line 2502 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = list1((yyvsp[-1].nd)); + } +#line 7833 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 93: /* mlhs_list: mlhs_list mlhs_item ',' */ +#line 2506 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[-1].nd)); + } +#line 7841 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 94: /* mlhs_post: mlhs_item */ +#line 2512 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = list1((yyvsp[0].nd)); + } +#line 7849 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 95: /* mlhs_post: mlhs_list mlhs_item */ +#line 2516 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = push((yyvsp[-1].nd), (yyvsp[0].nd)); + } +#line 7857 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 96: /* mlhs_node: variable */ +#line 2522 "mrbgems/mruby-compiler/core/parse.y" { assignable(p, (yyvsp[0].nd)); } -#line 7774 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7865 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 105: /* lhs: primary_value '[' opt_call_args ']' */ -#line 2405 "mrbgems/mruby-compiler/core/parse.y" + case 97: /* mlhs_node: primary_value '[' opt_call_args ']' */ +#line 2526 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.'); } -#line 7782 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7873 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 106: /* lhs: primary_value call_op "local variable or method" */ -#line 2409 "mrbgems/mruby-compiler/core/parse.y" + case 98: /* mlhs_node: primary_value call_op "local variable or method" */ +#line 2530 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); } -#line 7790 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7881 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 107: /* lhs: primary_value "::" "local variable or method" */ -#line 2413 "mrbgems/mruby-compiler/core/parse.y" + case 99: /* mlhs_node: primary_value "::" "local variable or method" */ +#line 2534 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); } -#line 7798 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7889 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 108: /* lhs: primary_value call_op "constant" */ -#line 2417 "mrbgems/mruby-compiler/core/parse.y" + case 100: /* mlhs_node: primary_value call_op "constant" */ +#line 2538 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); } -#line 7806 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7897 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 109: /* lhs: primary_value "::" "constant" */ -#line 2421 "mrbgems/mruby-compiler/core/parse.y" + case 101: /* mlhs_node: primary_value "::" "constant" */ +#line 2542 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(&(yylsp[-2]), p, "dynamic constant assignment"); (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); } -#line 7816 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7907 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 110: /* lhs: tCOLON3 "constant" */ -#line 2427 "mrbgems/mruby-compiler/core/parse.y" + case 102: /* mlhs_node: tCOLON3 "constant" */ +#line 2548 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(&(yylsp[-1]), p, "dynamic constant assignment"); (yyval.nd) = new_colon3(p, (yyvsp[0].id)); } -#line 7826 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7917 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 111: /* lhs: backref */ -#line 2433 "mrbgems/mruby-compiler/core/parse.y" + case 103: /* mlhs_node: backref */ +#line 2554 "mrbgems/mruby-compiler/core/parse.y" { backref_error(p, (yyvsp[0].nd)); (yyval.nd) = 0; } -#line 7835 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7926 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 104: /* lhs: variable */ +#line 2561 "mrbgems/mruby-compiler/core/parse.y" + { + assignable(p, (yyvsp[0].nd)); + } +#line 7934 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 105: /* lhs: primary_value '[' opt_call_args ']' */ +#line 2565 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.'); + } +#line 7942 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 106: /* lhs: primary_value call_op "local variable or method" */ +#line 2569 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); + } +#line 7950 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 107: /* lhs: primary_value "::" "local variable or method" */ +#line 2573 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); + } +#line 7958 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 108: /* lhs: primary_value call_op "constant" */ +#line 2577 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); + } +#line 7966 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 109: /* lhs: primary_value "::" "constant" */ +#line 2581 "mrbgems/mruby-compiler/core/parse.y" + { + if (p->in_def || p->in_single) + yyerror(&(yylsp[-2]), p, "dynamic constant assignment"); + (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); + } +#line 7976 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 110: /* lhs: tCOLON3 "constant" */ +#line 2587 "mrbgems/mruby-compiler/core/parse.y" + { + if (p->in_def || p->in_single) + yyerror(&(yylsp[-1]), p, "dynamic constant assignment"); + (yyval.nd) = new_colon3(p, (yyvsp[0].id)); + } +#line 7986 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 111: /* lhs: backref */ +#line 2593 "mrbgems/mruby-compiler/core/parse.y" + { + backref_error(p, (yyvsp[0].nd)); + (yyval.nd) = 0; + } +#line 7995 "mrbgems/mruby-compiler/core/y.tab.c" break; case 112: /* lhs: "numbered parameter" */ -#line 2438 "mrbgems/mruby-compiler/core/parse.y" +#line 2598 "mrbgems/mruby-compiler/core/parse.y" { yyerror(&(yylsp[0]), p, "can't assign to numbered parameter"); } -#line 7843 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8003 "mrbgems/mruby-compiler/core/y.tab.c" break; case 113: /* cname: "local variable or method" */ -#line 2444 "mrbgems/mruby-compiler/core/parse.y" +#line 2604 "mrbgems/mruby-compiler/core/parse.y" { yyerror(&(yylsp[0]), p, "class/module name must be CONSTANT"); } -#line 7851 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8011 "mrbgems/mruby-compiler/core/y.tab.c" break; case 115: /* cpath: tCOLON3 cname */ -#line 2451 "mrbgems/mruby-compiler/core/parse.y" +#line 2611 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(int_to_node(1), sym_to_node((yyvsp[0].id))); } -#line 7859 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8019 "mrbgems/mruby-compiler/core/y.tab.c" break; case 116: /* cpath: cname */ -#line 2455 "mrbgems/mruby-compiler/core/parse.y" +#line 2615 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(int_to_node(0), sym_to_node((yyvsp[0].id))); } -#line 7867 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8027 "mrbgems/mruby-compiler/core/y.tab.c" break; case 117: /* cpath: primary_value "::" cname */ -#line 2459 "mrbgems/mruby-compiler/core/parse.y" +#line 2619 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[-2].nd)); (yyval.nd) = cons((yyvsp[-2].nd), sym_to_node((yyvsp[0].id))); } -#line 7876 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 121: /* fname: op */ -#line 2469 "mrbgems/mruby-compiler/core/parse.y" - { - p->lstate = EXPR_ENDFN; - (yyval.id) = (yyvsp[0].id); - } -#line 7885 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 122: /* fname: reswords */ -#line 2474 "mrbgems/mruby-compiler/core/parse.y" - { - p->lstate = EXPR_ENDFN; - (yyval.id) = (yyvsp[0].id); - } -#line 7894 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 125: /* undef_list: fsym */ -#line 2485 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_undef(p, (yyvsp[0].id)); - } -#line 7902 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 126: /* $@6: %empty */ -#line 2488 "mrbgems/mruby-compiler/core/parse.y" - {p->lstate = EXPR_FNAME;} -#line 7908 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 127: /* undef_list: undef_list ',' $@6 fsym */ -#line 2489 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-3].nd), sym_to_node((yyvsp[0].id))); - } -#line 7916 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 128: /* op: '|' */ -#line 2494 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(or); } -#line 7922 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 129: /* op: '^' */ -#line 2495 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(xor); } -#line 7928 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 130: /* op: '&' */ -#line 2496 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(and); } -#line 7934 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 131: /* op: "<=>" */ -#line 2497 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(cmp); } -#line 7940 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 132: /* op: "==" */ -#line 2498 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(eq); } -#line 7946 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 133: /* op: "===" */ -#line 2499 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(eqq); } -#line 7952 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 134: /* op: "=~" */ -#line 2500 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(match); } -#line 7958 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 135: /* op: "!~" */ -#line 2501 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(nmatch); } -#line 7964 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 136: /* op: '>' */ -#line 2502 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(gt); } -#line 7970 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 137: /* op: ">=" */ -#line 2503 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(ge); } -#line 7976 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 138: /* op: '<' */ -#line 2504 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(lt); } -#line 7982 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 139: /* op: "<=" */ -#line 2505 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(le); } -#line 7988 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 140: /* op: "!=" */ -#line 2506 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(neq); } -#line 7994 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 141: /* op: "<<" */ -#line 2507 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(lshift); } -#line 8000 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 142: /* op: ">>" */ -#line 2508 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(rshift); } -#line 8006 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 143: /* op: '+' */ -#line 2509 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(add); } -#line 8012 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 144: /* op: '-' */ -#line 2510 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(sub); } -#line 8018 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 145: /* op: '*' */ -#line 2511 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(mul); } -#line 8024 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 146: /* op: "*" */ -#line 2512 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(mul); } -#line 8030 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 147: /* op: '/' */ -#line 2513 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(div); } #line 8036 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 148: /* op: '%' */ -#line 2514 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(mod); } -#line 8042 "mrbgems/mruby-compiler/core/y.tab.c" + case 121: /* fname: op */ +#line 2629 "mrbgems/mruby-compiler/core/parse.y" + { + p->lstate = EXPR_ENDFN; + (yyval.id) = (yyvsp[0].id); + } +#line 8045 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 149: /* op: tPOW */ -#line 2515 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(pow); } -#line 8048 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 150: /* op: "**" */ -#line 2516 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(pow); } + case 122: /* fname: reswords */ +#line 2634 "mrbgems/mruby-compiler/core/parse.y" + { + p->lstate = EXPR_ENDFN; + (yyval.id) = (yyvsp[0].id); + } #line 8054 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 151: /* op: '!' */ -#line 2517 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(not); } -#line 8060 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 152: /* op: '~' */ -#line 2518 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(neg); } -#line 8066 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 153: /* op: "unary plus" */ -#line 2519 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(plus); } -#line 8072 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 154: /* op: "unary minus" */ -#line 2520 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(minus); } -#line 8078 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 155: /* op: tAREF */ -#line 2521 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(aref); } -#line 8084 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 156: /* op: tASET */ -#line 2522 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(aset); } -#line 8090 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 157: /* op: '`' */ -#line 2523 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(tick); } -#line 8096 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 198: /* arg: lhs '=' arg_rhs */ -#line 2541 "mrbgems/mruby-compiler/core/parse.y" + case 125: /* undef_list: fsym */ +#line 2645 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); + (yyval.nd) = new_undef(p, (yyvsp[0].id)); } -#line 8104 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8062 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 199: /* arg: var_lhs tOP_ASGN arg_rhs */ -#line 2545 "mrbgems/mruby-compiler/core/parse.y" + case 126: /* $@6: %empty */ +#line 2648 "mrbgems/mruby-compiler/core/parse.y" + {p->lstate = EXPR_FNAME;} +#line 8068 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 127: /* undef_list: undef_list ',' $@6 fsym */ +#line 2649 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_op_asgn(p, (yyvsp[-2].nd), (yyvsp[-1].id), (yyvsp[0].nd)); + (yyval.nd) = push((yyvsp[-3].nd), sym_to_node((yyvsp[0].id))); } +#line 8076 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 128: /* op: '|' */ +#line 2654 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(or); } +#line 8082 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 129: /* op: '^' */ +#line 2655 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(xor); } +#line 8088 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 130: /* op: '&' */ +#line 2656 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(and); } +#line 8094 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 131: /* op: "<=>" */ +#line 2657 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(cmp); } +#line 8100 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 132: /* op: "==" */ +#line 2658 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(eq); } +#line 8106 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 133: /* op: "===" */ +#line 2659 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(eqq); } #line 8112 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 200: /* arg: primary_value '[' opt_call_args ']' tOP_ASGN arg_rhs */ -#line 2549 "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 8120 "mrbgems/mruby-compiler/core/y.tab.c" + case 134: /* op: "=~" */ +#line 2660 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(match); } +#line 8118 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 201: /* arg: primary_value call_op "local variable or method" tOP_ASGN arg_rhs */ -#line 2553 "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 8128 "mrbgems/mruby-compiler/core/y.tab.c" + case 135: /* op: "!~" */ +#line 2661 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(nmatch); } +#line 8124 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 202: /* arg: primary_value call_op "constant" tOP_ASGN arg_rhs */ -#line 2557 "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)); - } + case 136: /* op: '>' */ +#line 2662 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(gt); } +#line 8130 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 137: /* op: ">=" */ +#line 2663 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(ge); } #line 8136 "mrbgems/mruby-compiler/core/y.tab.c" break; + case 138: /* op: '<' */ +#line 2664 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(lt); } +#line 8142 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 139: /* op: "<=" */ +#line 2665 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(le); } +#line 8148 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 140: /* op: "!=" */ +#line 2666 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(neq); } +#line 8154 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 141: /* op: "<<" */ +#line 2667 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(lshift); } +#line 8160 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 142: /* op: ">>" */ +#line 2668 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(rshift); } +#line 8166 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 143: /* op: '+' */ +#line 2669 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(add); } +#line 8172 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 144: /* op: '-' */ +#line 2670 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(sub); } +#line 8178 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 145: /* op: '*' */ +#line 2671 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(mul); } +#line 8184 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 146: /* op: "*" */ +#line 2672 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(mul); } +#line 8190 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 147: /* op: '/' */ +#line 2673 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(div); } +#line 8196 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 148: /* op: '%' */ +#line 2674 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(mod); } +#line 8202 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 149: /* op: tPOW */ +#line 2675 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(pow); } +#line 8208 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 150: /* op: "**" */ +#line 2676 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(pow); } +#line 8214 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 151: /* op: '!' */ +#line 2677 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(not); } +#line 8220 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 152: /* op: '~' */ +#line 2678 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(neg); } +#line 8226 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 153: /* op: "unary plus" */ +#line 2679 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(plus); } +#line 8232 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 154: /* op: "unary minus" */ +#line 2680 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(minus); } +#line 8238 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 155: /* op: tAREF */ +#line 2681 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(aref); } +#line 8244 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 156: /* op: tASET */ +#line 2682 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(aset); } +#line 8250 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 157: /* op: '`' */ +#line 2683 "mrbgems/mruby-compiler/core/parse.y" + { (yyval.id) = intern_op(tick); } +#line 8256 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 198: /* arg: lhs '=' arg_rhs */ +#line 2701 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); + } +#line 8264 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 199: /* arg: var_lhs tOP_ASGN arg_rhs */ +#line 2705 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_op_asgn(p, (yyvsp[-2].nd), (yyvsp[-1].id), (yyvsp[0].nd)); + } +#line 8272 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 200: /* arg: primary_value '[' opt_call_args ']' tOP_ASGN arg_rhs */ +#line 2709 "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 8280 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 201: /* arg: primary_value call_op "local variable or method" tOP_ASGN arg_rhs */ +#line 2713 "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 8288 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 202: /* arg: primary_value call_op "constant" tOP_ASGN arg_rhs */ +#line 2717 "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 8296 "mrbgems/mruby-compiler/core/y.tab.c" + break; + case 203: /* arg: primary_value "::" "local variable or method" tOP_ASGN arg_rhs */ -#line 2561 "mrbgems/mruby-compiler/core/parse.y" +#line 2721 "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 8144 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8304 "mrbgems/mruby-compiler/core/y.tab.c" break; case 204: /* arg: primary_value "::" "constant" tOP_ASGN arg_rhs */ -#line 2565 "mrbgems/mruby-compiler/core/parse.y" +#line 2725 "mrbgems/mruby-compiler/core/parse.y" { yyerror(&(yylsp[-4]), p, "constant re-assignment"); (yyval.nd) = new_stmts(p, 0); } -#line 8153 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8313 "mrbgems/mruby-compiler/core/y.tab.c" break; case 205: /* arg: tCOLON3 "constant" tOP_ASGN arg_rhs */ -#line 2570 "mrbgems/mruby-compiler/core/parse.y" +#line 2730 "mrbgems/mruby-compiler/core/parse.y" { yyerror(&(yylsp[-3]), p, "constant re-assignment"); (yyval.nd) = new_stmts(p, 0); } -#line 8162 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8322 "mrbgems/mruby-compiler/core/y.tab.c" break; case 206: /* arg: backref tOP_ASGN arg_rhs */ -#line 2575 "mrbgems/mruby-compiler/core/parse.y" +#line 2735 "mrbgems/mruby-compiler/core/parse.y" { backref_error(p, (yyvsp[-2].nd)); (yyval.nd) = new_stmts(p, 0); } -#line 8171 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 207: /* arg: arg ".." arg */ -#line 2580 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_dot2(p, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 8179 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 208: /* arg: arg ".." */ -#line 2584 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_dot2(p, (yyvsp[-1].nd), new_nil(p)); - } -#line 8187 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 209: /* arg: tBDOT2 arg */ -#line 2588 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_dot2(p, new_nil(p), (yyvsp[0].nd)); - } -#line 8195 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 210: /* arg: arg "..." arg */ -#line 2592 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_dot3(p, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 8203 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 211: /* arg: arg "..." */ -#line 2596 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_dot3(p, (yyvsp[-1].nd), new_nil(p)); - } -#line 8211 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 212: /* arg: tBDOT3 arg */ -#line 2600 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_dot3(p, new_nil(p), (yyvsp[0].nd)); - } -#line 8219 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 213: /* arg: arg '+' arg */ -#line 2604 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "+", (yyvsp[0].nd)); - } -#line 8227 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 214: /* arg: arg '-' arg */ -#line 2608 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "-", (yyvsp[0].nd)); - } -#line 8235 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 215: /* arg: arg '*' arg */ -#line 2612 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "*", (yyvsp[0].nd)); - } -#line 8243 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 216: /* arg: arg '/' arg */ -#line 2616 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "/", (yyvsp[0].nd)); - } -#line 8251 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 217: /* arg: arg '%' arg */ -#line 2620 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "%", (yyvsp[0].nd)); - } -#line 8259 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 218: /* arg: arg tPOW arg */ -#line 2624 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)); - } -#line 8267 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 219: /* arg: tUMINUS_NUM "integer literal" tPOW arg */ -#line 2628 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_negate(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd))); - } -#line 8275 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 220: /* arg: tUMINUS_NUM "float literal" tPOW arg */ -#line 2632 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_negate(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd))); - } -#line 8283 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 221: /* arg: "unary plus" arg */ -#line 2636 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_uni_op(p, (yyvsp[0].nd), "+@"); - } -#line 8291 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 222: /* arg: "unary minus" arg */ -#line 2640 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_negate(p, (yyvsp[0].nd)); - } -#line 8299 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 223: /* arg: arg '|' arg */ -#line 2644 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "|", (yyvsp[0].nd)); - } -#line 8307 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 224: /* arg: arg '^' arg */ -#line 2648 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "^", (yyvsp[0].nd)); - } -#line 8315 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 225: /* arg: arg '&' arg */ -#line 2652 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "&", (yyvsp[0].nd)); - } -#line 8323 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 226: /* arg: arg "<=>" arg */ -#line 2656 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=>", (yyvsp[0].nd)); - } #line 8331 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 227: /* arg: arg '>' arg */ -#line 2660 "mrbgems/mruby-compiler/core/parse.y" + case 207: /* arg: arg ".." arg */ +#line 2740 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">", (yyvsp[0].nd)); + (yyval.nd) = new_dot2(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } #line 8339 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 228: /* arg: arg ">=" arg */ -#line 2664 "mrbgems/mruby-compiler/core/parse.y" + case 208: /* arg: arg ".." */ +#line 2744 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">=", (yyvsp[0].nd)); + (yyval.nd) = new_dot2(p, (yyvsp[-1].nd), new_nil(p)); } #line 8347 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 229: /* arg: arg '<' arg */ -#line 2668 "mrbgems/mruby-compiler/core/parse.y" + case 209: /* arg: tBDOT2 arg */ +#line 2748 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<", (yyvsp[0].nd)); + (yyval.nd) = new_dot2(p, new_nil(p), (yyvsp[0].nd)); } #line 8355 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 230: /* arg: arg "<=" arg */ -#line 2672 "mrbgems/mruby-compiler/core/parse.y" + case 210: /* arg: arg "..." arg */ +#line 2752 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=", (yyvsp[0].nd)); + (yyval.nd) = new_dot3(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } #line 8363 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 231: /* arg: arg "==" arg */ -#line 2676 "mrbgems/mruby-compiler/core/parse.y" + case 211: /* arg: arg "..." */ +#line 2756 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "==", (yyvsp[0].nd)); + (yyval.nd) = new_dot3(p, (yyvsp[-1].nd), new_nil(p)); } #line 8371 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 232: /* arg: arg "===" arg */ -#line 2680 "mrbgems/mruby-compiler/core/parse.y" + case 212: /* arg: tBDOT3 arg */ +#line 2760 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "===", (yyvsp[0].nd)); + (yyval.nd) = new_dot3(p, new_nil(p), (yyvsp[0].nd)); } #line 8379 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 233: /* arg: arg "!=" arg */ -#line 2684 "mrbgems/mruby-compiler/core/parse.y" + case 213: /* arg: arg '+' arg */ +#line 2764 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!=", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "+", (yyvsp[0].nd)); } #line 8387 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 234: /* arg: arg "=~" arg */ -#line 2688 "mrbgems/mruby-compiler/core/parse.y" + case 214: /* arg: arg '-' arg */ +#line 2768 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "=~", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "-", (yyvsp[0].nd)); } #line 8395 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 235: /* arg: arg "!~" arg */ -#line 2692 "mrbgems/mruby-compiler/core/parse.y" + case 215: /* arg: arg '*' arg */ +#line 2772 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!~", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "*", (yyvsp[0].nd)); } #line 8403 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 236: /* arg: '!' arg */ -#line 2696 "mrbgems/mruby-compiler/core/parse.y" + case 216: /* arg: arg '/' arg */ +#line 2776 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "/", (yyvsp[0].nd)); } #line 8411 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 237: /* arg: '~' arg */ -#line 2700 "mrbgems/mruby-compiler/core/parse.y" + case 217: /* arg: arg '%' arg */ +#line 2780 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "~"); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "%", (yyvsp[0].nd)); } #line 8419 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 238: /* arg: arg "<<" arg */ -#line 2704 "mrbgems/mruby-compiler/core/parse.y" + case 218: /* arg: arg tPOW arg */ +#line 2784 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<<", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)); } #line 8427 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 239: /* arg: arg ">>" arg */ -#line 2708 "mrbgems/mruby-compiler/core/parse.y" + case 219: /* arg: tUMINUS_NUM "integer literal" tPOW arg */ +#line 2788 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">>", (yyvsp[0].nd)); + (yyval.nd) = new_negate(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd))); } #line 8435 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 240: /* arg: arg "&&" arg */ -#line 2712 "mrbgems/mruby-compiler/core/parse.y" + case 220: /* arg: tUMINUS_NUM "float literal" tPOW arg */ +#line 2792 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd)); + (yyval.nd) = new_negate(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd))); } #line 8443 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 241: /* arg: arg "||" arg */ -#line 2716 "mrbgems/mruby-compiler/core/parse.y" + case 221: /* arg: "unary plus" arg */ +#line 2796 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd)); + (yyval.nd) = call_uni_op(p, (yyvsp[0].nd), "+@"); } #line 8451 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 242: /* arg: arg '?' arg opt_nl ':' arg */ -#line 2720 "mrbgems/mruby-compiler/core/parse.y" + case 222: /* arg: "unary minus" arg */ +#line 2800 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd)); + (yyval.nd) = new_negate(p, (yyvsp[0].nd)); } #line 8459 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 243: /* arg: arg '?' arg opt_nl "label" arg */ -#line 2724 "mrbgems/mruby-compiler/core/parse.y" + case 223: /* arg: arg '|' arg */ +#line 2804 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "|", (yyvsp[0].nd)); } #line 8467 "mrbgems/mruby-compiler/core/y.tab.c" break; + case 224: /* arg: arg '^' arg */ +#line 2808 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "^", (yyvsp[0].nd)); + } +#line 8475 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 225: /* arg: arg '&' arg */ +#line 2812 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "&", (yyvsp[0].nd)); + } +#line 8483 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 226: /* arg: arg "<=>" arg */ +#line 2816 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=>", (yyvsp[0].nd)); + } +#line 8491 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 227: /* arg: arg '>' arg */ +#line 2820 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">", (yyvsp[0].nd)); + } +#line 8499 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 228: /* arg: arg ">=" arg */ +#line 2824 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">=", (yyvsp[0].nd)); + } +#line 8507 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 229: /* arg: arg '<' arg */ +#line 2828 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<", (yyvsp[0].nd)); + } +#line 8515 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 230: /* arg: arg "<=" arg */ +#line 2832 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=", (yyvsp[0].nd)); + } +#line 8523 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 231: /* arg: arg "==" arg */ +#line 2836 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "==", (yyvsp[0].nd)); + } +#line 8531 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 232: /* arg: arg "===" arg */ +#line 2840 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "===", (yyvsp[0].nd)); + } +#line 8539 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 233: /* arg: arg "!=" arg */ +#line 2844 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!=", (yyvsp[0].nd)); + } +#line 8547 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 234: /* arg: arg "=~" arg */ +#line 2848 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "=~", (yyvsp[0].nd)); + } +#line 8555 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 235: /* arg: arg "!~" arg */ +#line 2852 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!~", (yyvsp[0].nd)); + } +#line 8563 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 236: /* arg: '!' arg */ +#line 2856 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); + } +#line 8571 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 237: /* arg: '~' arg */ +#line 2860 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "~"); + } +#line 8579 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 238: /* arg: arg "<<" arg */ +#line 2864 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<<", (yyvsp[0].nd)); + } +#line 8587 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 239: /* arg: arg ">>" arg */ +#line 2868 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">>", (yyvsp[0].nd)); + } +#line 8595 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 240: /* arg: arg "&&" arg */ +#line 2872 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd)); + } +#line 8603 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 241: /* arg: arg "||" arg */ +#line 2876 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd)); + } +#line 8611 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 242: /* arg: arg '?' arg opt_nl ':' arg */ +#line 2880 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd)); + } +#line 8619 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 243: /* arg: arg '?' arg opt_nl "label" arg */ +#line 2884 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd)); + } +#line 8627 "mrbgems/mruby-compiler/core/y.tab.c" + break; + case 244: /* arg: defn_head f_opt_arglist_paren '=' arg */ -#line 2728 "mrbgems/mruby-compiler/core/parse.y" +#line 2888 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-3].nd); endless_method_name(p, (yyvsp[-3].nd)); @@ -8476,11 +8636,11 @@ yyreduce: nvars_unnest(p); p->in_def--; } -#line 8480 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8640 "mrbgems/mruby-compiler/core/y.tab.c" break; case 245: /* arg: defn_head f_opt_arglist_paren '=' arg "'rescue' modifier" arg */ -#line 2737 "mrbgems/mruby-compiler/core/parse.y" +#line 2897 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-5].nd); endless_method_name(p, (yyvsp[-5].nd)); @@ -8489,11 +8649,11 @@ yyreduce: nvars_unnest(p); p->in_def--; } -#line 8493 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8653 "mrbgems/mruby-compiler/core/y.tab.c" break; case 246: /* arg: defs_head f_opt_arglist_paren '=' arg */ -#line 2746 "mrbgems/mruby-compiler/core/parse.y" +#line 2906 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-3].nd); void_expr_error(p, (yyvsp[0].nd)); @@ -8502,11 +8662,11 @@ yyreduce: p->in_def--; p->in_single--; } -#line 8506 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8666 "mrbgems/mruby-compiler/core/y.tab.c" break; case 247: /* arg: defs_head f_opt_arglist_paren '=' arg "'rescue' modifier" arg */ -#line 2755 "mrbgems/mruby-compiler/core/parse.y" +#line 2915 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-5].nd); void_expr_error(p, (yyvsp[-2].nd)); @@ -8515,68 +8675,68 @@ yyreduce: p->in_def--; p->in_single--; } -#line 8519 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8679 "mrbgems/mruby-compiler/core/y.tab.c" break; case 248: /* arg: primary */ -#line 2764 "mrbgems/mruby-compiler/core/parse.y" +#line 2924 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8527 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8687 "mrbgems/mruby-compiler/core/y.tab.c" break; case 250: /* aref_args: args trailer */ -#line 2771 "mrbgems/mruby-compiler/core/parse.y" +#line 2931 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 8535 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8695 "mrbgems/mruby-compiler/core/y.tab.c" break; case 251: /* aref_args: args comma assocs trailer */ -#line 2775 "mrbgems/mruby-compiler/core/parse.y" +#line 2935 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-3].nd), new_hash(p, (yyvsp[-1].nd))); } -#line 8543 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8703 "mrbgems/mruby-compiler/core/y.tab.c" break; case 252: /* aref_args: assocs trailer */ -#line 2779 "mrbgems/mruby-compiler/core/parse.y" +#line 2939 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(new_kw_hash(p, (yyvsp[-1].nd)), 0); } -#line 8551 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8711 "mrbgems/mruby-compiler/core/y.tab.c" break; case 253: /* arg_rhs: arg */ -#line 2785 "mrbgems/mruby-compiler/core/parse.y" +#line 2945 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8559 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8719 "mrbgems/mruby-compiler/core/y.tab.c" break; case 254: /* arg_rhs: arg "'rescue' modifier" arg */ -#line 2789 "mrbgems/mruby-compiler/core/parse.y" +#line 2949 "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 8568 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8728 "mrbgems/mruby-compiler/core/y.tab.c" break; case 255: /* paren_args: '(' opt_call_args ')' */ -#line 2796 "mrbgems/mruby-compiler/core/parse.y" +#line 2956 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 8576 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8736 "mrbgems/mruby-compiler/core/y.tab.c" break; case 256: /* paren_args: '(' args comma tBDOT3 rparen */ -#line 2800 "mrbgems/mruby-compiler/core/parse.y" +#line 2960 "mrbgems/mruby-compiler/core/parse.y" { mrb_sym r = intern_op(mul); mrb_sym k = intern_op(pow); @@ -8585,11 +8745,11 @@ 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 8589 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8749 "mrbgems/mruby-compiler/core/y.tab.c" break; case 257: /* paren_args: '(' tBDOT3 rparen */ -#line 2809 "mrbgems/mruby-compiler/core/parse.y" +#line 2969 "mrbgems/mruby-compiler/core/parse.y" { mrb_sym r = intern_op(mul); mrb_sym k = intern_op(pow); @@ -8604,374 +8764,374 @@ yyreduce: (yyval.nd) = 0; } } -#line 8608 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8768 "mrbgems/mruby-compiler/core/y.tab.c" break; case 262: /* opt_call_args: args comma */ -#line 2832 "mrbgems/mruby-compiler/core/parse.y" +#line 2992 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_callargs(p,(yyvsp[-1].nd),0,0); } -#line 8616 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8776 "mrbgems/mruby-compiler/core/y.tab.c" break; case 263: /* opt_call_args: args comma assocs comma */ -#line 2836 "mrbgems/mruby-compiler/core/parse.y" +#line 2996 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_callargs(p,(yyvsp[-3].nd),new_kw_hash(p,(yyvsp[-1].nd)),0); } -#line 8624 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8784 "mrbgems/mruby-compiler/core/y.tab.c" break; case 264: /* opt_call_args: assocs comma */ -#line 2840 "mrbgems/mruby-compiler/core/parse.y" +#line 3000 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_callargs(p,0,new_kw_hash(p,(yyvsp[-1].nd)),0); } -#line 8632 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8792 "mrbgems/mruby-compiler/core/y.tab.c" break; case 265: /* call_args: command */ -#line 2846 "mrbgems/mruby-compiler/core/parse.y" +#line 3006 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = new_callargs(p, list1((yyvsp[0].nd)), 0, 0); } -#line 8641 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8801 "mrbgems/mruby-compiler/core/y.tab.c" break; case 266: /* call_args: args opt_block_arg */ -#line 2851 "mrbgems/mruby-compiler/core/parse.y" +#line 3011 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_callargs(p, (yyvsp[-1].nd), 0, (yyvsp[0].nd)); } -#line 8649 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8809 "mrbgems/mruby-compiler/core/y.tab.c" break; case 267: /* call_args: assocs opt_block_arg */ -#line 2855 "mrbgems/mruby-compiler/core/parse.y" +#line 3015 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_callargs(p, 0, new_kw_hash(p, (yyvsp[-1].nd)), (yyvsp[0].nd)); } -#line 8657 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8817 "mrbgems/mruby-compiler/core/y.tab.c" break; case 268: /* call_args: args comma assocs opt_block_arg */ -#line 2859 "mrbgems/mruby-compiler/core/parse.y" +#line 3019 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_callargs(p, (yyvsp[-3].nd), new_kw_hash(p, (yyvsp[-1].nd)), (yyvsp[0].nd)); } -#line 8665 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8825 "mrbgems/mruby-compiler/core/y.tab.c" break; case 269: /* call_args: block_arg */ -#line 2863 "mrbgems/mruby-compiler/core/parse.y" +#line 3023 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_callargs(p, 0, 0, (yyvsp[0].nd)); } -#line 8673 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 270: /* @7: %empty */ -#line 2868 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.stack) = p->cmdarg_stack; - CMDARG_PUSH(1); - } -#line 8682 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 271: /* command_args: @7 call_args */ -#line 2873 "mrbgems/mruby-compiler/core/parse.y" - { - p->cmdarg_stack = (yyvsp[-1].stack); - (yyval.nd) = (yyvsp[0].nd); - } -#line 8691 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 272: /* block_arg: "&" arg */ -#line 2880 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_block_arg(p, (yyvsp[0].nd)); - } -#line 8699 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 273: /* block_arg: "&" */ -#line 2884 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_block_arg(p, 0); - } -#line 8707 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 274: /* opt_block_arg: comma block_arg */ -#line 2890 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 8715 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 275: /* opt_block_arg: none */ -#line 2894 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = 0; - } -#line 8723 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 277: /* args: arg */ -#line 2903 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = list1((yyvsp[0].nd)); - } -#line 8732 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 278: /* args: "*" */ -#line 2908 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1(new_splat(p, new_lvar(p, intern_op(mul)))); - } -#line 8740 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 279: /* args: "*" arg */ -#line 2912 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1(new_splat(p, (yyvsp[0].nd))); - } -#line 8748 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 280: /* args: args comma arg */ -#line 2916 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 8757 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 281: /* args: args comma "*" */ -#line 2921 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-2].nd), new_splat(p, new_lvar(p, intern_op(mul)))); - } -#line 8765 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 282: /* args: args comma "*" arg */ -#line 2925 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd))); - } -#line 8773 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 283: /* mrhs: args comma arg */ -#line 2931 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 8782 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 284: /* mrhs: args comma "*" arg */ -#line 2936 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd))); - } -#line 8790 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 285: /* mrhs: "*" arg */ -#line 2940 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1(new_splat(p, (yyvsp[0].nd))); - } -#line 8798 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 293: /* primary: "method" */ -#line 2953 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_fcall(p, (yyvsp[0].id), 0); - } -#line 8806 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 294: /* @8: %empty */ -#line 2957 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.stack) = p->cmdarg_stack; - p->cmdarg_stack = 0; - } -#line 8815 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 295: /* primary: "'begin'" @8 bodystmt "'end'" */ -#line 2963 "mrbgems/mruby-compiler/core/parse.y" - { - p->cmdarg_stack = (yyvsp[-2].stack); - (yyval.nd) = new_begin(p, (yyvsp[-1].nd)); - } -#line 8824 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 296: /* @9: %empty */ -#line 2968 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.stack) = p->cmdarg_stack; - p->cmdarg_stack = 0; - } #line 8833 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 297: /* $@10: %empty */ -#line 2972 "mrbgems/mruby-compiler/core/parse.y" - {p->lstate = EXPR_ENDARG;} -#line 8839 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 298: /* primary: "(" @9 stmt $@10 rparen */ -#line 2973 "mrbgems/mruby-compiler/core/parse.y" - { - p->cmdarg_stack = (yyvsp[-3].stack); - (yyval.nd) = (yyvsp[-2].nd); + case 270: /* @7: %empty */ +#line 3028 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.stack) = p->cmdarg_stack; + CMDARG_PUSH(1); } -#line 8848 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8842 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 299: /* $@11: %empty */ -#line 2977 "mrbgems/mruby-compiler/core/parse.y" - {p->lstate = EXPR_ENDARG;} -#line 8854 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 300: /* primary: "(" $@11 rparen */ -#line 2978 "mrbgems/mruby-compiler/core/parse.y" + case 271: /* command_args: @7 call_args */ +#line 3033 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_nil(p); + p->cmdarg_stack = (yyvsp[-1].stack); + (yyval.nd) = (yyvsp[0].nd); } -#line 8862 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8851 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 301: /* primary: tLPAREN compstmt ')' */ -#line 2982 "mrbgems/mruby-compiler/core/parse.y" + case 272: /* block_arg: "&" arg */ +#line 3040 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = (yyvsp[-1].nd); + (yyval.nd) = new_block_arg(p, (yyvsp[0].nd)); } -#line 8870 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8859 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 302: /* primary: primary_value "::" "constant" */ -#line 2986 "mrbgems/mruby-compiler/core/parse.y" + case 273: /* block_arg: "&" */ +#line 3044 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); + (yyval.nd) = new_block_arg(p, 0); } -#line 8878 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8867 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 303: /* primary: tCOLON3 "constant" */ -#line 2990 "mrbgems/mruby-compiler/core/parse.y" + case 274: /* opt_block_arg: comma block_arg */ +#line 3050 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_colon3(p, (yyvsp[0].id)); + (yyval.nd) = (yyvsp[0].nd); } -#line 8886 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8875 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 304: /* primary: "[" aref_args ']' */ -#line 2994 "mrbgems/mruby-compiler/core/parse.y" + case 275: /* opt_block_arg: none */ +#line 3054 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_array(p, (yyvsp[-1].nd)); + (yyval.nd) = 0; } -#line 8894 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8883 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 305: /* primary: tLBRACE assoc_list '}' */ -#line 2998 "mrbgems/mruby-compiler/core/parse.y" + case 277: /* args: arg */ +#line 3063 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_hash(p, (yyvsp[-1].nd)); + void_expr_error(p, (yyvsp[0].nd)); + (yyval.nd) = list1((yyvsp[0].nd)); } -#line 8902 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8892 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 306: /* primary: "'return'" */ -#line 3002 "mrbgems/mruby-compiler/core/parse.y" + case 278: /* args: "*" */ +#line 3068 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_return(p, 0); + (yyval.nd) = list1(new_splat(p, new_lvar(p, intern_op(mul)))); } -#line 8910 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8900 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 307: /* primary: "'yield'" opt_paren_args */ -#line 3006 "mrbgems/mruby-compiler/core/parse.y" + case 279: /* args: "*" arg */ +#line 3072 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_yield(p, (yyvsp[0].nd)); + (yyval.nd) = list1(new_splat(p, (yyvsp[0].nd))); } -#line 8918 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8908 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 308: /* primary: "'not'" '(' expr rparen */ -#line 3010 "mrbgems/mruby-compiler/core/parse.y" + case 280: /* args: args comma arg */ +#line 3076 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_uni_op(p, cond((yyvsp[-1].nd)), "!"); + void_expr_error(p, (yyvsp[0].nd)); + (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 8926 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8917 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 309: /* primary: "'not'" '(' rparen */ -#line 3014 "mrbgems/mruby-compiler/core/parse.y" + case 281: /* args: args comma "*" */ +#line 3081 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_uni_op(p, new_nil(p), "!"); + (yyval.nd) = push((yyvsp[-2].nd), new_splat(p, new_lvar(p, intern_op(mul)))); } -#line 8934 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8925 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 310: /* primary: operation brace_block */ -#line 3018 "mrbgems/mruby-compiler/core/parse.y" + case 282: /* args: args comma "*" arg */ +#line 3085 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_fcall(p, (yyvsp[-1].id), new_callargs(p, 0, 0, (yyvsp[0].nd))); + (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd))); + } +#line 8933 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 283: /* mrhs: args comma arg */ +#line 3091 "mrbgems/mruby-compiler/core/parse.y" + { + void_expr_error(p, (yyvsp[0].nd)); + (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } #line 8942 "mrbgems/mruby-compiler/core/y.tab.c" break; + case 284: /* mrhs: args comma "*" arg */ +#line 3096 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd))); + } +#line 8950 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 285: /* mrhs: "*" arg */ +#line 3100 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = list1(new_splat(p, (yyvsp[0].nd))); + } +#line 8958 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 293: /* primary: "method" */ +#line 3113 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_fcall(p, (yyvsp[0].id), 0); + } +#line 8966 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 294: /* @8: %empty */ +#line 3117 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.stack) = p->cmdarg_stack; + p->cmdarg_stack = 0; + } +#line 8975 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 295: /* primary: "'begin'" @8 bodystmt "'end'" */ +#line 3123 "mrbgems/mruby-compiler/core/parse.y" + { + p->cmdarg_stack = (yyvsp[-2].stack); + (yyval.nd) = new_begin(p, (yyvsp[-1].nd)); + } +#line 8984 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 296: /* @9: %empty */ +#line 3128 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.stack) = p->cmdarg_stack; + p->cmdarg_stack = 0; + } +#line 8993 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 297: /* $@10: %empty */ +#line 3132 "mrbgems/mruby-compiler/core/parse.y" + {p->lstate = EXPR_ENDARG;} +#line 8999 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 298: /* primary: "(" @9 stmt $@10 rparen */ +#line 3133 "mrbgems/mruby-compiler/core/parse.y" + { + p->cmdarg_stack = (yyvsp[-3].stack); + (yyval.nd) = (yyvsp[-2].nd); + } +#line 9008 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 299: /* $@11: %empty */ +#line 3137 "mrbgems/mruby-compiler/core/parse.y" + {p->lstate = EXPR_ENDARG;} +#line 9014 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 300: /* primary: "(" $@11 rparen */ +#line 3138 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_nil(p); + } +#line 9022 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 301: /* primary: tLPAREN compstmt ')' */ +#line 3142 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = (yyvsp[-1].nd); + } +#line 9030 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 302: /* primary: primary_value "::" "constant" */ +#line 3146 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); + } +#line 9038 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 303: /* primary: tCOLON3 "constant" */ +#line 3150 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_colon3(p, (yyvsp[0].id)); + } +#line 9046 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 304: /* primary: "[" aref_args ']' */ +#line 3154 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_array(p, (yyvsp[-1].nd)); + } +#line 9054 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 305: /* primary: tLBRACE assoc_list '}' */ +#line 3158 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_hash(p, (yyvsp[-1].nd)); + } +#line 9062 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 306: /* primary: "'return'" */ +#line 3162 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_return(p, 0); + } +#line 9070 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 307: /* primary: "'yield'" opt_paren_args */ +#line 3166 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_yield(p, (yyvsp[0].nd)); + } +#line 9078 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 308: /* primary: "'not'" '(' expr rparen */ +#line 3170 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_uni_op(p, cond((yyvsp[-1].nd)), "!"); + } +#line 9086 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 309: /* primary: "'not'" '(' rparen */ +#line 3174 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_uni_op(p, new_nil(p), "!"); + } +#line 9094 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 310: /* primary: operation brace_block */ +#line 3178 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_fcall(p, (yyvsp[-1].id), new_callargs(p, 0, 0, (yyvsp[0].nd))); + } +#line 9102 "mrbgems/mruby-compiler/core/y.tab.c" + break; + case 312: /* primary: method_call brace_block */ -#line 3023 "mrbgems/mruby-compiler/core/parse.y" +#line 3183 "mrbgems/mruby-compiler/core/parse.y" { call_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); (yyval.nd) = (yyvsp[-1].nd); } -#line 8951 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9111 "mrbgems/mruby-compiler/core/y.tab.c" break; case 313: /* @12: %empty */ -#line 3028 "mrbgems/mruby-compiler/core/parse.y" +#line 3188 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); (yyval.num) = p->lpar_beg; p->lpar_beg = ++p->paren_nest; } -#line 8962 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9122 "mrbgems/mruby-compiler/core/y.tab.c" break; case 314: /* @13: %empty */ -#line 3035 "mrbgems/mruby-compiler/core/parse.y" +#line 3195 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; p->cmdarg_stack = 0; } -#line 8971 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9131 "mrbgems/mruby-compiler/core/y.tab.c" break; case 315: /* primary: "->" @12 f_larglist @13 lambda_body */ -#line 3040 "mrbgems/mruby-compiler/core/parse.y" +#line 3200 "mrbgems/mruby-compiler/core/parse.y" { p->lpar_beg = (yyvsp[-3].num); (yyval.nd) = new_lambda(p, (yyvsp[-2].nd), (yyvsp[0].nd)); @@ -8980,149 +9140,149 @@ yyreduce: p->cmdarg_stack = (yyvsp[-1].stack); CMDARG_LEXPOP(); } -#line 8984 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9144 "mrbgems/mruby-compiler/core/y.tab.c" break; case 316: /* primary: "'if'" expr_value then compstmt if_tail "'end'" */ -#line 3052 "mrbgems/mruby-compiler/core/parse.y" +#line 3212 "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 8993 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9153 "mrbgems/mruby-compiler/core/y.tab.c" break; case 317: /* primary: "'unless'" expr_value then compstmt opt_else "'end'" */ -#line 3060 "mrbgems/mruby-compiler/core/parse.y" +#line 3220 "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 9002 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9162 "mrbgems/mruby-compiler/core/y.tab.c" break; case 318: /* $@14: %empty */ -#line 3064 "mrbgems/mruby-compiler/core/parse.y" +#line 3224 "mrbgems/mruby-compiler/core/parse.y" {COND_PUSH(1);} -#line 9008 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9168 "mrbgems/mruby-compiler/core/y.tab.c" break; case 319: /* $@15: %empty */ -#line 3064 "mrbgems/mruby-compiler/core/parse.y" +#line 3224 "mrbgems/mruby-compiler/core/parse.y" {COND_POP();} -#line 9014 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9174 "mrbgems/mruby-compiler/core/y.tab.c" break; case 320: /* primary: "'while'" $@14 expr_value do $@15 compstmt "'end'" */ -#line 3067 "mrbgems/mruby-compiler/core/parse.y" +#line 3227 "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 9023 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9183 "mrbgems/mruby-compiler/core/y.tab.c" break; case 321: /* $@16: %empty */ -#line 3071 "mrbgems/mruby-compiler/core/parse.y" +#line 3231 "mrbgems/mruby-compiler/core/parse.y" {COND_PUSH(1);} -#line 9029 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9189 "mrbgems/mruby-compiler/core/y.tab.c" break; case 322: /* $@17: %empty */ -#line 3071 "mrbgems/mruby-compiler/core/parse.y" +#line 3231 "mrbgems/mruby-compiler/core/parse.y" {COND_POP();} -#line 9035 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9195 "mrbgems/mruby-compiler/core/y.tab.c" break; case 323: /* primary: "'until'" $@16 expr_value do $@17 compstmt "'end'" */ -#line 3074 "mrbgems/mruby-compiler/core/parse.y" +#line 3234 "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 9044 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9204 "mrbgems/mruby-compiler/core/y.tab.c" break; case 324: /* primary: "'case'" expr_value opt_terms case_body "'end'" */ -#line 3081 "mrbgems/mruby-compiler/core/parse.y" +#line 3241 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_case(p, (yyvsp[-3].nd), (yyvsp[-1].nd)); } -#line 9052 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9212 "mrbgems/mruby-compiler/core/y.tab.c" break; case 325: /* primary: "'case'" opt_terms case_body "'end'" */ -#line 3085 "mrbgems/mruby-compiler/core/parse.y" +#line 3245 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_case(p, 0, (yyvsp[-1].nd)); } -#line 9060 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9220 "mrbgems/mruby-compiler/core/y.tab.c" break; case 326: /* $@18: %empty */ -#line 3089 "mrbgems/mruby-compiler/core/parse.y" +#line 3249 "mrbgems/mruby-compiler/core/parse.y" {COND_PUSH(1);} -#line 9066 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9226 "mrbgems/mruby-compiler/core/y.tab.c" break; case 327: /* $@19: %empty */ -#line 3091 "mrbgems/mruby-compiler/core/parse.y" +#line 3251 "mrbgems/mruby-compiler/core/parse.y" {COND_POP();} -#line 9072 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9232 "mrbgems/mruby-compiler/core/y.tab.c" break; case 328: /* primary: "'for'" for_var "'in'" $@18 expr_value do $@19 compstmt "'end'" */ -#line 3094 "mrbgems/mruby-compiler/core/parse.y" +#line 3254 "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 9081 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9241 "mrbgems/mruby-compiler/core/y.tab.c" break; case 329: /* @20: %empty */ -#line 3100 "mrbgems/mruby-compiler/core/parse.y" +#line 3260 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(&(yylsp[-2]), p, "class definition in method body"); (yyval.nd) = local_switch(p); nvars_block(p); } -#line 9092 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9252 "mrbgems/mruby-compiler/core/y.tab.c" break; case 330: /* primary: "'class'" cpath superclass @20 bodystmt "'end'" */ -#line 3108 "mrbgems/mruby-compiler/core/parse.y" +#line 3268 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_class(p, (yyvsp[-4].nd), (yyvsp[-3].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-5].num)); local_resume(p, (yyvsp[-2].nd)); nvars_unnest(p); } -#line 9103 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9263 "mrbgems/mruby-compiler/core/y.tab.c" break; case 331: /* @21: %empty */ -#line 3116 "mrbgems/mruby-compiler/core/parse.y" +#line 3276 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = p->in_def; p->in_def = 0; } -#line 9112 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9272 "mrbgems/mruby-compiler/core/y.tab.c" break; case 332: /* @22: %empty */ -#line 3121 "mrbgems/mruby-compiler/core/parse.y" +#line 3281 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(local_switch(p), int_to_node(p->in_single)); nvars_block(p); p->in_single = 0; } -#line 9122 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9282 "mrbgems/mruby-compiler/core/y.tab.c" break; case 333: /* primary: "'class'" "<<" expr @21 term @22 bodystmt "'end'" */ -#line 3128 "mrbgems/mruby-compiler/core/parse.y" +#line 3288 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_sclass(p, (yyvsp[-5].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-7].num)); @@ -9131,44 +9291,44 @@ yyreduce: p->in_def = (yyvsp[-4].num); p->in_single = node_to_int((yyvsp[-2].nd)->cdr); } -#line 9135 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9295 "mrbgems/mruby-compiler/core/y.tab.c" break; case 334: /* @23: %empty */ -#line 3138 "mrbgems/mruby-compiler/core/parse.y" +#line 3298 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(&(yylsp[-1]), p, "module definition in method body"); (yyval.nd) = local_switch(p); nvars_block(p); } -#line 9146 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9306 "mrbgems/mruby-compiler/core/y.tab.c" break; case 335: /* primary: "'module'" cpath @23 bodystmt "'end'" */ -#line 3146 "mrbgems/mruby-compiler/core/parse.y" +#line 3306 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_module(p, (yyvsp[-3].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-4].num)); local_resume(p, (yyvsp[-2].nd)); nvars_unnest(p); } -#line 9157 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9317 "mrbgems/mruby-compiler/core/y.tab.c" break; case 336: /* primary: defn_head f_arglist bodystmt "'end'" */ -#line 3156 "mrbgems/mruby-compiler/core/parse.y" +#line 3316 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-3].nd); defn_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[-1].nd)); nvars_unnest(p); p->in_def--; } -#line 9168 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9328 "mrbgems/mruby-compiler/core/y.tab.c" break; case 337: /* primary: defs_head f_arglist bodystmt "'end'" */ -#line 3166 "mrbgems/mruby-compiler/core/parse.y" +#line 3326 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-3].nd); defs_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[-1].nd)); @@ -9176,453 +9336,453 @@ yyreduce: p->in_def--; p->in_single--; } -#line 9180 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9340 "mrbgems/mruby-compiler/core/y.tab.c" break; case 338: /* primary: "'break'" */ -#line 3174 "mrbgems/mruby-compiler/core/parse.y" +#line 3334 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_break(p, 0); } -#line 9188 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9348 "mrbgems/mruby-compiler/core/y.tab.c" break; case 339: /* primary: "'next'" */ -#line 3178 "mrbgems/mruby-compiler/core/parse.y" +#line 3338 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_next(p, 0); } -#line 9196 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9356 "mrbgems/mruby-compiler/core/y.tab.c" break; case 340: /* primary: "'redo'" */ -#line 3182 "mrbgems/mruby-compiler/core/parse.y" +#line 3342 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_redo(p); } -#line 9204 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9364 "mrbgems/mruby-compiler/core/y.tab.c" break; case 341: /* primary: "'retry'" */ -#line 3186 "mrbgems/mruby-compiler/core/parse.y" +#line 3346 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_retry(p); } -#line 9212 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9372 "mrbgems/mruby-compiler/core/y.tab.c" break; case 342: /* primary_value: primary */ -#line 3192 "mrbgems/mruby-compiler/core/parse.y" +#line 3352 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); if (!(yyval.nd)) (yyval.nd) = new_nil(p); } -#line 9221 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9381 "mrbgems/mruby-compiler/core/y.tab.c" break; case 349: /* if_tail: "'elsif'" expr_value then compstmt if_tail */ -#line 3211 "mrbgems/mruby-compiler/core/parse.y" +#line 3371 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[-3].nd)), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9229 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9389 "mrbgems/mruby-compiler/core/y.tab.c" break; case 351: /* opt_else: "'else'" compstmt */ -#line 3218 "mrbgems/mruby-compiler/core/parse.y" +#line 3378 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 9237 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9397 "mrbgems/mruby-compiler/core/y.tab.c" break; case 352: /* for_var: lhs */ -#line 3224 "mrbgems/mruby-compiler/core/parse.y" +#line 3384 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(list1((yyvsp[0].nd))); } -#line 9245 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9405 "mrbgems/mruby-compiler/core/y.tab.c" break; case 354: /* f_margs: f_arg */ -#line 3231 "mrbgems/mruby-compiler/core/parse.y" +#line 3391 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[0].nd),0,0); } -#line 9253 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9413 "mrbgems/mruby-compiler/core/y.tab.c" break; case 355: /* f_margs: f_arg ',' "*" f_norm_arg */ -#line 3235 "mrbgems/mruby-compiler/core/parse.y" +#line 3395 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-3].nd), new_arg(p, (yyvsp[0].id)), 0); } -#line 9261 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9421 "mrbgems/mruby-compiler/core/y.tab.c" break; case 356: /* f_margs: f_arg ',' "*" f_norm_arg ',' f_arg */ -#line 3239 "mrbgems/mruby-compiler/core/parse.y" +#line 3399 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-5].nd), new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd)); } -#line 9269 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9429 "mrbgems/mruby-compiler/core/y.tab.c" break; case 357: /* f_margs: f_arg ',' "*" */ -#line 3243 "mrbgems/mruby-compiler/core/parse.y" +#line 3403 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, intern_op(mul)); (yyval.nd) = list3((yyvsp[-2].nd), int_to_node(-1), 0); } -#line 9278 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9438 "mrbgems/mruby-compiler/core/y.tab.c" break; case 358: /* f_margs: f_arg ',' "*" ',' f_arg */ -#line 3248 "mrbgems/mruby-compiler/core/parse.y" +#line 3408 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-4].nd), int_to_node(-1), (yyvsp[0].nd)); } -#line 9286 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9446 "mrbgems/mruby-compiler/core/y.tab.c" break; case 359: /* f_margs: "*" f_norm_arg */ -#line 3252 "mrbgems/mruby-compiler/core/parse.y" +#line 3412 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, new_arg(p, (yyvsp[0].id)), 0); } -#line 9294 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9454 "mrbgems/mruby-compiler/core/y.tab.c" break; case 360: /* f_margs: "*" f_norm_arg ',' f_arg */ -#line 3256 "mrbgems/mruby-compiler/core/parse.y" +#line 3416 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd)); } -#line 9302 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9462 "mrbgems/mruby-compiler/core/y.tab.c" break; case 361: /* f_margs: "*" */ -#line 3260 "mrbgems/mruby-compiler/core/parse.y" +#line 3420 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, intern_op(mul)); (yyval.nd) = list3(0, int_to_node(-1), 0); } -#line 9311 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 362: /* $@24: %empty */ -#line 3265 "mrbgems/mruby-compiler/core/parse.y" - { - local_add_f(p, intern_op(mul)); - } -#line 9319 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 363: /* f_margs: "*" ',' $@24 f_arg */ -#line 3269 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list3(0, int_to_node(-1), (yyvsp[0].nd)); - } -#line 9327 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 364: /* block_args_tail: f_block_kwarg ',' f_kwrest opt_f_block_arg */ -#line 3275 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); - } -#line 9335 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 365: /* block_args_tail: f_block_kwarg opt_f_block_arg */ -#line 3279 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); - } -#line 9343 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 366: /* block_args_tail: f_kwrest opt_f_block_arg */ -#line 3283 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); - } -#line 9351 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 367: /* block_args_tail: f_block_arg */ -#line 3287 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); - } -#line 9359 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 368: /* opt_block_args_tail: ',' block_args_tail */ -#line 3293 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 9367 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 369: /* opt_block_args_tail: %empty */ -#line 3297 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_tail(p, 0, 0, 0); - } -#line 9375 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 370: /* block_param: f_arg ',' f_block_optarg ',' f_rest_arg opt_block_args_tail */ -#line 3303 "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 9383 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 371: /* block_param: f_arg ',' f_block_optarg ',' f_rest_arg ',' f_arg opt_block_args_tail */ -#line 3307 "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 9391 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 372: /* block_param: f_arg ',' f_block_optarg opt_block_args_tail */ -#line 3311 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); - } -#line 9399 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 373: /* block_param: f_arg ',' f_block_optarg ',' f_arg opt_block_args_tail */ -#line 3315 "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 9407 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 374: /* block_param: f_arg ',' f_rest_arg opt_block_args_tail */ -#line 3319 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); - } -#line 9415 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 375: /* block_param: f_arg ',' opt_block_args_tail */ -#line 3323 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-2].nd), 0, 0, 0, (yyvsp[0].nd)); - } -#line 9423 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 376: /* block_param: f_arg ',' f_rest_arg ',' f_arg opt_block_args_tail */ -#line 3327 "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 9431 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 377: /* block_param: f_arg opt_block_args_tail */ -#line 3331 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); - } -#line 9439 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 378: /* block_param: f_block_optarg ',' f_rest_arg opt_block_args_tail */ -#line 3335 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); - } -#line 9447 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 379: /* block_param: f_block_optarg ',' f_rest_arg ',' f_arg opt_block_args_tail */ -#line 3339 "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 9455 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 380: /* block_param: f_block_optarg opt_block_args_tail */ -#line 3343 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); - } -#line 9463 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 381: /* block_param: f_block_optarg ',' f_arg opt_block_args_tail */ -#line 3347 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); - } #line 9471 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 382: /* block_param: f_rest_arg opt_block_args_tail */ -#line 3351 "mrbgems/mruby-compiler/core/parse.y" + case 362: /* $@24: %empty */ +#line 3425 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); + local_add_f(p, intern_op(mul)); } #line 9479 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 383: /* block_param: f_rest_arg ',' f_arg opt_block_args_tail */ -#line 3355 "mrbgems/mruby-compiler/core/parse.y" + case 363: /* f_margs: "*" ',' $@24 f_arg */ +#line 3429 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = list3(0, int_to_node(-1), (yyvsp[0].nd)); } #line 9487 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 384: /* block_param: block_args_tail */ -#line 3359 "mrbgems/mruby-compiler/core/parse.y" + case 364: /* block_args_tail: f_block_kwarg ',' f_kwrest opt_f_block_arg */ +#line 3435 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); } #line 9495 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 385: /* opt_block_param: none */ -#line 3365 "mrbgems/mruby-compiler/core/parse.y" + case 365: /* block_args_tail: f_block_kwarg opt_f_block_arg */ +#line 3439 "mrbgems/mruby-compiler/core/parse.y" { - local_add_blk(p); - (yyval.nd) = 0; + (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); } -#line 9504 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9503 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 386: /* opt_block_param: block_param_def */ -#line 3370 "mrbgems/mruby-compiler/core/parse.y" - { - p->cmd_start = TRUE; - (yyval.nd) = (yyvsp[0].nd); + case 366: /* block_args_tail: f_kwrest opt_f_block_arg */ +#line 3443 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 9513 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9511 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 387: /* $@25: %empty */ -#line 3376 "mrbgems/mruby-compiler/core/parse.y" - {local_add_blk(p);} + case 367: /* block_args_tail: f_block_arg */ +#line 3447 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); + } #line 9519 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 388: /* block_param_def: '|' $@25 opt_bv_decl '|' */ -#line 3377 "mrbgems/mruby-compiler/core/parse.y" + case 368: /* opt_block_args_tail: ',' block_args_tail */ +#line 3453 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = 0; + (yyval.nd) = (yyvsp[0].nd); } #line 9527 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 389: /* block_param_def: "||" */ -#line 3381 "mrbgems/mruby-compiler/core/parse.y" + case 369: /* opt_block_args_tail: %empty */ +#line 3457 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args_tail(p, 0, 0, 0); + } +#line 9535 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 370: /* block_param: f_arg ',' f_block_optarg ',' f_rest_arg opt_block_args_tail */ +#line 3463 "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 9543 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 371: /* block_param: f_arg ',' f_block_optarg ',' f_rest_arg ',' f_arg opt_block_args_tail */ +#line 3467 "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 9551 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 372: /* block_param: f_arg ',' f_block_optarg opt_block_args_tail */ +#line 3471 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); + } +#line 9559 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 373: /* block_param: f_arg ',' f_block_optarg ',' f_arg opt_block_args_tail */ +#line 3475 "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 9567 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 374: /* block_param: f_arg ',' f_rest_arg opt_block_args_tail */ +#line 3479 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); + } +#line 9575 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 375: /* block_param: f_arg ',' opt_block_args_tail */ +#line 3483 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, (yyvsp[-2].nd), 0, 0, 0, (yyvsp[0].nd)); + } +#line 9583 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 376: /* block_param: f_arg ',' f_rest_arg ',' f_arg opt_block_args_tail */ +#line 3487 "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 9591 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 377: /* block_param: f_arg opt_block_args_tail */ +#line 3491 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); + } +#line 9599 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 378: /* block_param: f_block_optarg ',' f_rest_arg opt_block_args_tail */ +#line 3495 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); + } +#line 9607 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 379: /* block_param: f_block_optarg ',' f_rest_arg ',' f_arg opt_block_args_tail */ +#line 3499 "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 9615 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 380: /* block_param: f_block_optarg opt_block_args_tail */ +#line 3503 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); + } +#line 9623 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 381: /* block_param: f_block_optarg ',' f_arg opt_block_args_tail */ +#line 3507 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); + } +#line 9631 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 382: /* block_param: f_rest_arg opt_block_args_tail */ +#line 3511 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); + } +#line 9639 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 383: /* block_param: f_rest_arg ',' f_arg opt_block_args_tail */ +#line 3515 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + } +#line 9647 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 384: /* block_param: block_args_tail */ +#line 3519 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); + } +#line 9655 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 385: /* opt_block_param: none */ +#line 3525 "mrbgems/mruby-compiler/core/parse.y" { local_add_blk(p); (yyval.nd) = 0; } -#line 9536 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9664 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 386: /* opt_block_param: block_param_def */ +#line 3530 "mrbgems/mruby-compiler/core/parse.y" + { + p->cmd_start = TRUE; + (yyval.nd) = (yyvsp[0].nd); + } +#line 9673 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 387: /* $@25: %empty */ +#line 3536 "mrbgems/mruby-compiler/core/parse.y" + {local_add_blk(p);} +#line 9679 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 388: /* block_param_def: '|' $@25 opt_bv_decl '|' */ +#line 3537 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = 0; + } +#line 9687 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 389: /* block_param_def: "||" */ +#line 3541 "mrbgems/mruby-compiler/core/parse.y" + { + local_add_blk(p); + (yyval.nd) = 0; + } +#line 9696 "mrbgems/mruby-compiler/core/y.tab.c" break; case 390: /* block_param_def: '|' block_param opt_bv_decl '|' */ -#line 3386 "mrbgems/mruby-compiler/core/parse.y" +#line 3546 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-2].nd); } -#line 9544 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9704 "mrbgems/mruby-compiler/core/y.tab.c" break; case 391: /* opt_bv_decl: opt_nl */ -#line 3393 "mrbgems/mruby-compiler/core/parse.y" +#line 3553 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 9552 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9712 "mrbgems/mruby-compiler/core/y.tab.c" break; case 392: /* opt_bv_decl: opt_nl ';' bv_decls opt_nl */ -#line 3397 "mrbgems/mruby-compiler/core/parse.y" +#line 3557 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 9560 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9720 "mrbgems/mruby-compiler/core/y.tab.c" break; case 395: /* bvar: "local variable or method" */ -#line 3407 "mrbgems/mruby-compiler/core/parse.y" +#line 3567 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); new_bv(p, (yyvsp[0].id)); } -#line 9569 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9729 "mrbgems/mruby-compiler/core/y.tab.c" break; case 397: /* f_larglist: '(' f_args opt_bv_decl ')' */ -#line 3415 "mrbgems/mruby-compiler/core/parse.y" +#line 3575 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-2].nd); } -#line 9577 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9737 "mrbgems/mruby-compiler/core/y.tab.c" break; case 398: /* f_larglist: f_args */ -#line 3419 "mrbgems/mruby-compiler/core/parse.y" +#line 3579 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 9585 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9745 "mrbgems/mruby-compiler/core/y.tab.c" break; case 399: /* lambda_body: tLAMBEG compstmt '}' */ -#line 3425 "mrbgems/mruby-compiler/core/parse.y" +#line 3585 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 9593 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9753 "mrbgems/mruby-compiler/core/y.tab.c" break; case 400: /* lambda_body: "'do' for lambda" bodystmt "'end'" */ -#line 3429 "mrbgems/mruby-compiler/core/parse.y" +#line 3589 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 9601 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9761 "mrbgems/mruby-compiler/core/y.tab.c" break; case 401: /* @26: %empty */ -#line 3435 "mrbgems/mruby-compiler/core/parse.y" +#line 3595 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); (yyval.num) = p->lineno; } -#line 9611 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9771 "mrbgems/mruby-compiler/core/y.tab.c" break; case 402: /* do_block: "'do' for block" @26 opt_block_param bodystmt "'end'" */ -#line 3443 "mrbgems/mruby-compiler/core/parse.y" +#line 3603 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-3].num)); local_unnest(p); nvars_unnest(p); } -#line 9622 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9782 "mrbgems/mruby-compiler/core/y.tab.c" break; case 403: /* block_call: command do_block */ -#line 3452 "mrbgems/mruby-compiler/core/parse.y" +#line 3612 "mrbgems/mruby-compiler/core/parse.y" { if (node_to_type((yyvsp[-1].nd)->car) == NODE_YIELD) { yyerror(&(yylsp[-1]), p, "block given to yield"); @@ -9632,159 +9792,159 @@ yyreduce: } (yyval.nd) = (yyvsp[-1].nd); } -#line 9636 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9796 "mrbgems/mruby-compiler/core/y.tab.c" break; case 404: /* block_call: block_call call_op2 operation2 opt_paren_args */ -#line 3462 "mrbgems/mruby-compiler/core/parse.y" +#line 3622 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 9644 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9804 "mrbgems/mruby-compiler/core/y.tab.c" break; case 405: /* block_call: block_call call_op2 operation2 opt_paren_args brace_block */ -#line 3466 "mrbgems/mruby-compiler/core/parse.y" +#line 3626 "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 9653 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9813 "mrbgems/mruby-compiler/core/y.tab.c" break; case 406: /* block_call: block_call call_op2 operation2 command_args do_block */ -#line 3471 "mrbgems/mruby-compiler/core/parse.y" +#line 3631 "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 9662 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9822 "mrbgems/mruby-compiler/core/y.tab.c" break; case 407: /* method_call: operation paren_args */ -#line 3478 "mrbgems/mruby-compiler/core/parse.y" +#line 3638 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 9670 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9830 "mrbgems/mruby-compiler/core/y.tab.c" break; case 408: /* method_call: primary_value call_op operation2 opt_paren_args */ -#line 3482 "mrbgems/mruby-compiler/core/parse.y" +#line 3642 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 9678 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9838 "mrbgems/mruby-compiler/core/y.tab.c" break; case 409: /* method_call: primary_value "::" operation2 paren_args */ -#line 3486 "mrbgems/mruby-compiler/core/parse.y" +#line 3646 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2); } -#line 9686 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9846 "mrbgems/mruby-compiler/core/y.tab.c" break; case 410: /* method_call: primary_value "::" operation3 */ -#line 3490 "mrbgems/mruby-compiler/core/parse.y" +#line 3650 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); } -#line 9694 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9854 "mrbgems/mruby-compiler/core/y.tab.c" break; case 411: /* method_call: primary_value call_op paren_args */ -#line 3494 "mrbgems/mruby-compiler/core/parse.y" +#line 3654 "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 9702 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9862 "mrbgems/mruby-compiler/core/y.tab.c" break; case 412: /* method_call: primary_value "::" paren_args */ -#line 3498 "mrbgems/mruby-compiler/core/parse.y" +#line 3658 "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 9710 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9870 "mrbgems/mruby-compiler/core/y.tab.c" break; case 413: /* method_call: "'super'" paren_args */ -#line 3502 "mrbgems/mruby-compiler/core/parse.y" +#line 3662 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_super(p, (yyvsp[0].nd)); } -#line 9718 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9878 "mrbgems/mruby-compiler/core/y.tab.c" break; case 414: /* method_call: "'super'" */ -#line 3506 "mrbgems/mruby-compiler/core/parse.y" +#line 3666 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_zsuper(p); } -#line 9726 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9886 "mrbgems/mruby-compiler/core/y.tab.c" break; case 415: /* method_call: primary_value '[' opt_call_args ']' */ -#line 3510 "mrbgems/mruby-compiler/core/parse.y" +#line 3670 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.'); } -#line 9734 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9894 "mrbgems/mruby-compiler/core/y.tab.c" break; case 416: /* @27: %empty */ -#line 3516 "mrbgems/mruby-compiler/core/parse.y" +#line 3676 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); (yyval.num) = p->lineno; } -#line 9744 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9904 "mrbgems/mruby-compiler/core/y.tab.c" break; case 417: /* brace_block: '{' @27 opt_block_param compstmt '}' */ -#line 3523 "mrbgems/mruby-compiler/core/parse.y" +#line 3683 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-3].num)); local_unnest(p); nvars_unnest(p); } -#line 9755 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9915 "mrbgems/mruby-compiler/core/y.tab.c" break; case 418: /* @28: %empty */ -#line 3530 "mrbgems/mruby-compiler/core/parse.y" +#line 3690 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); (yyval.num) = p->lineno; } -#line 9765 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9925 "mrbgems/mruby-compiler/core/y.tab.c" break; case 419: /* brace_block: "'do'" @28 opt_block_param bodystmt "'end'" */ -#line 3537 "mrbgems/mruby-compiler/core/parse.y" +#line 3697 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-3].num)); local_unnest(p); nvars_unnest(p); } -#line 9776 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9936 "mrbgems/mruby-compiler/core/y.tab.c" break; case 420: /* case_body: "'when'" args then compstmt cases */ -#line 3548 "mrbgems/mruby-compiler/core/parse.y" +#line 3708 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(cons((yyvsp[-3].nd), (yyvsp[-1].nd)), (yyvsp[0].nd)); } -#line 9784 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9944 "mrbgems/mruby-compiler/core/y.tab.c" break; case 421: /* cases: opt_else */ -#line 3554 "mrbgems/mruby-compiler/core/parse.y" +#line 3714 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[0].nd)) { (yyval.nd) = cons(cons(0, (yyvsp[0].nd)), 0); @@ -9793,60 +9953,60 @@ yyreduce: (yyval.nd) = 0; } } -#line 9797 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9957 "mrbgems/mruby-compiler/core/y.tab.c" break; case 423: /* opt_rescue: "'rescue'" exc_list exc_var then compstmt opt_rescue */ -#line 3568 "mrbgems/mruby-compiler/core/parse.y" +#line 3728 "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 9806 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9966 "mrbgems/mruby-compiler/core/y.tab.c" break; case 425: /* exc_list: arg */ -#line 3576 "mrbgems/mruby-compiler/core/parse.y" +#line 3736 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9814 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9974 "mrbgems/mruby-compiler/core/y.tab.c" break; case 428: /* exc_var: "=>" lhs */ -#line 3584 "mrbgems/mruby-compiler/core/parse.y" +#line 3744 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 9822 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9982 "mrbgems/mruby-compiler/core/y.tab.c" break; case 430: /* opt_ensure: "'ensure'" compstmt */ -#line 3591 "mrbgems/mruby-compiler/core/parse.y" +#line 3751 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 9830 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9990 "mrbgems/mruby-compiler/core/y.tab.c" break; case 437: /* string: string string_fragment */ -#line 3605 "mrbgems/mruby-compiler/core/parse.y" +#line 3765 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = concat_string(p, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9838 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9998 "mrbgems/mruby-compiler/core/y.tab.c" break; case 440: /* string_fragment: "string literal" tSTRING */ -#line 3613 "mrbgems/mruby-compiler/core/parse.y" +#line 3773 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 9846 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10006 "mrbgems/mruby-compiler/core/y.tab.c" break; case 441: /* string_fragment: "string literal" string_rep tSTRING */ -#line 3617 "mrbgems/mruby-compiler/core/parse.y" +#line 3777 "mrbgems/mruby-compiler/core/parse.y" { node *n = (yyvsp[-1].nd); if (node_to_int((yyvsp[0].nd)->cdr->cdr) > 0) { @@ -9857,68 +10017,68 @@ yyreduce: } (yyval.nd) = new_dstr(p, n); } -#line 9861 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10021 "mrbgems/mruby-compiler/core/y.tab.c" break; case 443: /* string_rep: string_rep string_interp */ -#line 3631 "mrbgems/mruby-compiler/core/parse.y" +#line 3791 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = append((yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9869 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10029 "mrbgems/mruby-compiler/core/y.tab.c" break; case 444: /* string_interp: tSTRING_MID */ -#line 3637 "mrbgems/mruby-compiler/core/parse.y" +#line 3797 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9877 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10037 "mrbgems/mruby-compiler/core/y.tab.c" break; case 445: /* @29: %empty */ -#line 3641 "mrbgems/mruby-compiler/core/parse.y" +#line 3801 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push_strterm(p); } -#line 9885 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10045 "mrbgems/mruby-compiler/core/y.tab.c" break; case 446: /* string_interp: tSTRING_PART @29 compstmt '}' */ -#line 3646 "mrbgems/mruby-compiler/core/parse.y" +#line 3806 "mrbgems/mruby-compiler/core/parse.y" { pop_strterm(p,(yyvsp[-2].nd)); (yyval.nd) = list2((yyvsp[-3].nd), (yyvsp[-1].nd)); } -#line 9894 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10054 "mrbgems/mruby-compiler/core/y.tab.c" break; case 447: /* string_interp: tLITERAL_DELIM */ -#line 3651 "mrbgems/mruby-compiler/core/parse.y" +#line 3811 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(new_literal_delim(p)); } -#line 9902 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10062 "mrbgems/mruby-compiler/core/y.tab.c" break; case 448: /* string_interp: tHD_LITERAL_DELIM heredoc_bodies */ -#line 3655 "mrbgems/mruby-compiler/core/parse.y" +#line 3815 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(new_literal_delim(p)); } -#line 9910 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10070 "mrbgems/mruby-compiler/core/y.tab.c" break; case 449: /* xstring: tXSTRING_BEG tXSTRING */ -#line 3661 "mrbgems/mruby-compiler/core/parse.y" +#line 3821 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 9918 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10078 "mrbgems/mruby-compiler/core/y.tab.c" break; case 450: /* xstring: tXSTRING_BEG string_rep tXSTRING */ -#line 3665 "mrbgems/mruby-compiler/core/parse.y" +#line 3825 "mrbgems/mruby-compiler/core/parse.y" { node *n = (yyvsp[-1].nd); if (node_to_int((yyvsp[0].nd)->cdr->cdr) > 0) { @@ -9929,81 +10089,81 @@ yyreduce: } (yyval.nd) = new_dxstr(p, n); } -#line 9933 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10093 "mrbgems/mruby-compiler/core/y.tab.c" break; case 451: /* regexp: tREGEXP_BEG tREGEXP */ -#line 3678 "mrbgems/mruby-compiler/core/parse.y" +#line 3838 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 9941 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10101 "mrbgems/mruby-compiler/core/y.tab.c" break; case 452: /* regexp: tREGEXP_BEG string_rep tREGEXP */ -#line 3682 "mrbgems/mruby-compiler/core/parse.y" +#line 3842 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dregx(p, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9949 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10109 "mrbgems/mruby-compiler/core/y.tab.c" break; case 456: /* heredoc_body: tHEREDOC_END */ -#line 3695 "mrbgems/mruby-compiler/core/parse.y" +#line 3855 "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 9959 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10119 "mrbgems/mruby-compiler/core/y.tab.c" break; case 457: /* heredoc_body: heredoc_string_rep tHEREDOC_END */ -#line 3701 "mrbgems/mruby-compiler/core/parse.y" +#line 3861 "mrbgems/mruby-compiler/core/parse.y" { heredoc_end(p); } -#line 9967 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10127 "mrbgems/mruby-compiler/core/y.tab.c" break; case 460: /* heredoc_string_interp: tHD_STRING_MID */ -#line 3711 "mrbgems/mruby-compiler/core/parse.y" +#line 3871 "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 9977 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10137 "mrbgems/mruby-compiler/core/y.tab.c" break; case 461: /* @30: %empty */ -#line 3717 "mrbgems/mruby-compiler/core/parse.y" +#line 3877 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push_strterm(p); } -#line 9985 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10145 "mrbgems/mruby-compiler/core/y.tab.c" break; case 462: /* heredoc_string_interp: tHD_STRING_PART @30 compstmt '}' */ -#line 3722 "mrbgems/mruby-compiler/core/parse.y" +#line 3882 "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 9995 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10155 "mrbgems/mruby-compiler/core/y.tab.c" break; case 463: /* words: tWORDS_BEG tSTRING */ -#line 3730 "mrbgems/mruby-compiler/core/parse.y" +#line 3890 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_words(p, list1((yyvsp[0].nd))); } -#line 10003 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10163 "mrbgems/mruby-compiler/core/y.tab.c" break; case 464: /* words: tWORDS_BEG string_rep tSTRING */ -#line 3734 "mrbgems/mruby-compiler/core/parse.y" +#line 3894 "mrbgems/mruby-compiler/core/parse.y" { node *n = (yyvsp[-1].nd); if (node_to_int((yyvsp[0].nd)->cdr->cdr) > 0) { @@ -10014,19 +10174,19 @@ yyreduce: } (yyval.nd) = new_words(p, n); } -#line 10018 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10178 "mrbgems/mruby-compiler/core/y.tab.c" break; case 465: /* symbol: basic_symbol */ -#line 3748 "mrbgems/mruby-compiler/core/parse.y" +#line 3908 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_sym(p, (yyvsp[0].id)); } -#line 10026 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10186 "mrbgems/mruby-compiler/core/y.tab.c" break; case 466: /* symbol: "symbol" "string literal" string_rep tSTRING */ -#line 3752 "mrbgems/mruby-compiler/core/parse.y" +#line 3912 "mrbgems/mruby-compiler/core/parse.y" { node *n = (yyvsp[-1].nd); p->lstate = EXPR_ENDARG; @@ -10038,53 +10198,53 @@ yyreduce: } (yyval.nd) = new_dsym(p, new_dstr(p, n)); } -#line 10042 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10202 "mrbgems/mruby-compiler/core/y.tab.c" break; case 467: /* symbol: "symbol" "numbered parameter" */ -#line 3764 "mrbgems/mruby-compiler/core/parse.y" +#line 3924 "mrbgems/mruby-compiler/core/parse.y" { mrb_sym sym = intern_numparam((yyvsp[0].num)); (yyval.nd) = new_sym(p, sym); } -#line 10051 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10211 "mrbgems/mruby-compiler/core/y.tab.c" break; case 468: /* basic_symbol: "symbol" sym */ -#line 3771 "mrbgems/mruby-compiler/core/parse.y" +#line 3931 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_END; (yyval.id) = (yyvsp[0].id); } -#line 10060 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10220 "mrbgems/mruby-compiler/core/y.tab.c" break; case 473: /* sym: tSTRING */ -#line 3782 "mrbgems/mruby-compiler/core/parse.y" +#line 3942 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = new_strsym(p, (yyvsp[0].nd)); } -#line 10068 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10228 "mrbgems/mruby-compiler/core/y.tab.c" break; case 474: /* sym: "string literal" tSTRING */ -#line 3786 "mrbgems/mruby-compiler/core/parse.y" +#line 3946 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = new_strsym(p, (yyvsp[0].nd)); } -#line 10076 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10236 "mrbgems/mruby-compiler/core/y.tab.c" break; case 475: /* symbols: tSYMBOLS_BEG tSTRING */ -#line 3792 "mrbgems/mruby-compiler/core/parse.y" +#line 3952 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_symbols(p, list1((yyvsp[0].nd))); } -#line 10084 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10244 "mrbgems/mruby-compiler/core/y.tab.c" break; case 476: /* symbols: tSYMBOLS_BEG string_rep tSTRING */ -#line 3796 "mrbgems/mruby-compiler/core/parse.y" +#line 3956 "mrbgems/mruby-compiler/core/parse.y" { node *n = (yyvsp[-1].nd); if (node_to_int((yyvsp[0].nd)->cdr->cdr) > 0) { @@ -10092,131 +10252,131 @@ yyreduce: } (yyval.nd) = new_symbols(p, n); } -#line 10096 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10256 "mrbgems/mruby-compiler/core/y.tab.c" break; case 479: /* numeric: tUMINUS_NUM "integer literal" */ -#line 3808 "mrbgems/mruby-compiler/core/parse.y" +#line 3968 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_negate(p, (yyvsp[0].nd)); } -#line 10104 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10264 "mrbgems/mruby-compiler/core/y.tab.c" break; case 480: /* numeric: tUMINUS_NUM "float literal" */ -#line 3812 "mrbgems/mruby-compiler/core/parse.y" +#line 3972 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_negate(p, (yyvsp[0].nd)); } -#line 10112 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10272 "mrbgems/mruby-compiler/core/y.tab.c" break; case 481: /* variable: "local variable or method" */ -#line 3818 "mrbgems/mruby-compiler/core/parse.y" +#line 3978 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_lvar(p, (yyvsp[0].id)); } -#line 10120 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10280 "mrbgems/mruby-compiler/core/y.tab.c" break; case 482: /* variable: "instance variable" */ -#line 3822 "mrbgems/mruby-compiler/core/parse.y" +#line 3982 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_ivar(p, (yyvsp[0].id)); } -#line 10128 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10288 "mrbgems/mruby-compiler/core/y.tab.c" break; case 483: /* variable: "global variable" */ -#line 3826 "mrbgems/mruby-compiler/core/parse.y" +#line 3986 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_gvar(p, (yyvsp[0].id)); } -#line 10136 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10296 "mrbgems/mruby-compiler/core/y.tab.c" break; case 484: /* variable: "class variable" */ -#line 3830 "mrbgems/mruby-compiler/core/parse.y" +#line 3990 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_cvar(p, (yyvsp[0].id)); } -#line 10144 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10304 "mrbgems/mruby-compiler/core/y.tab.c" break; case 485: /* variable: "constant" */ -#line 3834 "mrbgems/mruby-compiler/core/parse.y" +#line 3994 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_const(p, (yyvsp[0].id)); } -#line 10152 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10312 "mrbgems/mruby-compiler/core/y.tab.c" break; case 486: /* var_lhs: variable */ -#line 3840 "mrbgems/mruby-compiler/core/parse.y" +#line 4000 "mrbgems/mruby-compiler/core/parse.y" { assignable(p, (yyvsp[0].nd)); } -#line 10160 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10320 "mrbgems/mruby-compiler/core/y.tab.c" break; case 487: /* var_lhs: "numbered parameter" */ -#line 3844 "mrbgems/mruby-compiler/core/parse.y" +#line 4004 "mrbgems/mruby-compiler/core/parse.y" { yyerror(&(yylsp[0]), p, "can't assign to numbered parameter"); } -#line 10168 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10328 "mrbgems/mruby-compiler/core/y.tab.c" break; case 488: /* var_ref: variable */ -#line 3850 "mrbgems/mruby-compiler/core/parse.y" +#line 4010 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = var_reference(p, (yyvsp[0].nd)); } -#line 10176 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10336 "mrbgems/mruby-compiler/core/y.tab.c" break; case 489: /* var_ref: "numbered parameter" */ -#line 3854 "mrbgems/mruby-compiler/core/parse.y" +#line 4014 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_nvar(p, (yyvsp[0].num)); } -#line 10184 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10344 "mrbgems/mruby-compiler/core/y.tab.c" break; case 490: /* var_ref: "'nil'" */ -#line 3858 "mrbgems/mruby-compiler/core/parse.y" +#line 4018 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_nil(p); } -#line 10192 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10352 "mrbgems/mruby-compiler/core/y.tab.c" break; case 491: /* var_ref: "'self'" */ -#line 3862 "mrbgems/mruby-compiler/core/parse.y" +#line 4022 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_self(p); } -#line 10200 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10360 "mrbgems/mruby-compiler/core/y.tab.c" break; case 492: /* var_ref: "'true'" */ -#line 3866 "mrbgems/mruby-compiler/core/parse.y" +#line 4026 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_true(p); } -#line 10208 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10368 "mrbgems/mruby-compiler/core/y.tab.c" break; case 493: /* var_ref: "'false'" */ -#line 3870 "mrbgems/mruby-compiler/core/parse.y" +#line 4030 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_false(p); } -#line 10216 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10376 "mrbgems/mruby-compiler/core/y.tab.c" break; case 494: /* var_ref: "'__FILE__'" */ -#line 3874 "mrbgems/mruby-compiler/core/parse.y" +#line 4034 "mrbgems/mruby-compiler/core/parse.y" { const char *fn = mrb_sym_name_len(p->mrb, p->filename_sym, NULL); if (!fn) { @@ -10224,686 +10384,686 @@ yyreduce: } (yyval.nd) = new_str(p, fn, strlen(fn)); } -#line 10228 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10388 "mrbgems/mruby-compiler/core/y.tab.c" break; case 495: /* var_ref: "'__LINE__'" */ -#line 3882 "mrbgems/mruby-compiler/core/parse.y" +#line 4042 "mrbgems/mruby-compiler/core/parse.y" { char buf[16]; dump_int(p->lineno, buf); (yyval.nd) = new_int(p, buf, 10, 0); } -#line 10239 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10399 "mrbgems/mruby-compiler/core/y.tab.c" break; case 496: /* var_ref: "'__ENCODING__'" */ -#line 3889 "mrbgems/mruby-compiler/core/parse.y" +#line 4049 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, MRB_SYM_2(p->mrb, __ENCODING__), 0); } -#line 10247 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10407 "mrbgems/mruby-compiler/core/y.tab.c" break; case 499: /* superclass: %empty */ -#line 3899 "mrbgems/mruby-compiler/core/parse.y" +#line 4059 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 10255 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10415 "mrbgems/mruby-compiler/core/y.tab.c" break; case 500: /* $@31: %empty */ -#line 3903 "mrbgems/mruby-compiler/core/parse.y" +#line 4063 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_BEG; p->cmd_start = TRUE; } -#line 10264 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 501: /* superclass: '<' $@31 expr_value term */ -#line 3908 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 10272 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 504: /* f_arglist_paren: '(' f_args rparen */ -#line 3924 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - p->lstate = EXPR_BEG; - p->cmd_start = TRUE; - } -#line 10282 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 505: /* f_arglist_paren: '(' f_arg ',' tBDOT3 rparen */ -#line 3930 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_dots(p, (yyvsp[-3].nd)); - } -#line 10290 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 506: /* f_arglist_paren: '(' tBDOT3 rparen */ -#line 3934 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_dots(p, 0); - } -#line 10298 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 508: /* f_arglist: f_args term */ -#line 3941 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 10306 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 509: /* f_arglist: f_arg ',' tBDOT3 term */ -#line 3945 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_dots(p, (yyvsp[-3].nd)); - } -#line 10314 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 510: /* f_arglist: "..." term */ -#line 3949 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_dots(p, 0); - } -#line 10322 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 511: /* f_label: "local variable or method" "label" */ -#line 3955 "mrbgems/mruby-compiler/core/parse.y" - { - local_nest(p); - } -#line 10330 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 512: /* f_label: "numbered parameter" "label" */ -#line 3959 "mrbgems/mruby-compiler/core/parse.y" - { - local_nest(p); - } -#line 10338 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 513: /* f_kw: f_label arg */ -#line 3965 "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 10348 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 514: /* f_kw: f_label */ -#line 3971 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); - local_unnest(p); - } -#line 10357 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 515: /* f_block_kw: f_label primary_value */ -#line 3978 "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 10367 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 516: /* f_block_kw: f_label */ -#line 3984 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); - local_unnest(p); - } -#line 10376 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 517: /* f_block_kwarg: f_block_kw */ -#line 3991 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1((yyvsp[0].nd)); - } -#line 10384 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 518: /* f_block_kwarg: f_block_kwarg ',' f_block_kw */ -#line 3995 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 10392 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 519: /* f_kwarg: f_kw */ -#line 4001 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1((yyvsp[0].nd)); - } -#line 10400 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 520: /* f_kwarg: f_kwarg ',' f_kw */ -#line 4005 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 10408 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 523: /* f_kwrest: kwrest_mark "local variable or method" */ -#line 4015 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_kw_rest_args(p, (yyvsp[0].id)); - } -#line 10416 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 524: /* f_kwrest: kwrest_mark */ -#line 4019 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_kw_rest_args(p, 0); - } #line 10424 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 525: /* args_tail: f_kwarg ',' f_kwrest opt_f_block_arg */ -#line 4025 "mrbgems/mruby-compiler/core/parse.y" + case 501: /* superclass: '<' $@31 expr_value term */ +#line 4068 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); + (yyval.nd) = (yyvsp[-1].nd); } #line 10432 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 526: /* args_tail: f_kwarg opt_f_block_arg */ -#line 4029 "mrbgems/mruby-compiler/core/parse.y" + case 504: /* f_arglist_paren: '(' f_args rparen */ +#line 4084 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); + (yyval.nd) = (yyvsp[-1].nd); + p->lstate = EXPR_BEG; + p->cmd_start = TRUE; } -#line 10440 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10442 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 527: /* args_tail: f_kwrest opt_f_block_arg */ -#line 4033 "mrbgems/mruby-compiler/core/parse.y" + case 505: /* f_arglist_paren: '(' f_arg ',' tBDOT3 rparen */ +#line 4090 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); + (yyval.nd) = new_args_dots(p, (yyvsp[-3].nd)); } -#line 10448 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10450 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 528: /* args_tail: f_block_arg */ -#line 4037 "mrbgems/mruby-compiler/core/parse.y" + case 506: /* f_arglist_paren: '(' tBDOT3 rparen */ +#line 4094 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); + (yyval.nd) = new_args_dots(p, 0); } -#line 10456 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10458 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 529: /* opt_args_tail: ',' args_tail */ -#line 4043 "mrbgems/mruby-compiler/core/parse.y" + case 508: /* f_arglist: f_args term */ +#line 4101 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = (yyvsp[0].nd); + (yyval.nd) = (yyvsp[-1].nd); } -#line 10464 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10466 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 530: /* opt_args_tail: %empty */ -#line 4047 "mrbgems/mruby-compiler/core/parse.y" + case 509: /* f_arglist: f_arg ',' tBDOT3 term */ +#line 4105 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, 0, 0, 0); + (yyval.nd) = new_args_dots(p, (yyvsp[-3].nd)); } -#line 10472 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10474 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 531: /* f_args: f_arg ',' f_optarg ',' f_rest_arg opt_args_tail */ -#line 4053 "mrbgems/mruby-compiler/core/parse.y" + case 510: /* f_arglist: "..." term */ +#line 4109 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_args_dots(p, 0); } -#line 10480 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10482 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 532: /* f_args: f_arg ',' f_optarg ',' f_rest_arg ',' f_arg opt_args_tail */ -#line 4057 "mrbgems/mruby-compiler/core/parse.y" + case 511: /* f_label: "local variable or method" "label" */ +#line 4115 "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)); + local_nest(p); } -#line 10488 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10490 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 533: /* f_args: f_arg ',' f_optarg opt_args_tail */ -#line 4061 "mrbgems/mruby-compiler/core/parse.y" + case 512: /* f_label: "numbered parameter" "label" */ +#line 4119 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); + local_nest(p); } -#line 10496 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10498 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 534: /* f_args: f_arg ',' f_optarg ',' f_arg opt_args_tail */ -#line 4065 "mrbgems/mruby-compiler/core/parse.y" + case 513: /* f_kw: f_label arg */ +#line 4125 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); + 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 10504 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10508 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 535: /* f_args: f_arg ',' f_rest_arg opt_args_tail */ -#line 4069 "mrbgems/mruby-compiler/core/parse.y" + case 514: /* f_kw: f_label */ +#line 4131 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); + local_unnest(p); } -#line 10512 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10517 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 536: /* f_args: f_arg ',' f_rest_arg ',' f_arg opt_args_tail */ -#line 4073 "mrbgems/mruby-compiler/core/parse.y" + case 515: /* f_block_kw: f_label primary_value */ +#line 4138 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + 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 10520 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10527 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 537: /* f_args: f_arg opt_args_tail */ -#line 4077 "mrbgems/mruby-compiler/core/parse.y" + case 516: /* f_block_kw: f_label */ +#line 4144 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); - } -#line 10528 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 538: /* f_args: f_optarg ',' f_rest_arg opt_args_tail */ -#line 4081 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); + local_unnest(p); } #line 10536 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 539: /* f_args: f_optarg ',' f_rest_arg ',' f_arg opt_args_tail */ -#line 4085 "mrbgems/mruby-compiler/core/parse.y" + case 517: /* f_block_kwarg: f_block_kw */ +#line 4151 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = list1((yyvsp[0].nd)); } #line 10544 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 540: /* f_args: f_optarg opt_args_tail */ -#line 4089 "mrbgems/mruby-compiler/core/parse.y" + case 518: /* f_block_kwarg: f_block_kwarg ',' f_block_kw */ +#line 4155 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); + (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } #line 10552 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 541: /* f_args: f_optarg ',' f_arg opt_args_tail */ -#line 4093 "mrbgems/mruby-compiler/core/parse.y" + case 519: /* f_kwarg: f_kw */ +#line 4161 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = list1((yyvsp[0].nd)); } #line 10560 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 542: /* f_args: f_rest_arg opt_args_tail */ -#line 4097 "mrbgems/mruby-compiler/core/parse.y" + case 520: /* f_kwarg: f_kwarg ',' f_kw */ +#line 4165 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } #line 10568 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 543: /* f_args: f_rest_arg ',' f_arg opt_args_tail */ -#line 4101 "mrbgems/mruby-compiler/core/parse.y" + case 523: /* f_kwrest: kwrest_mark "local variable or method" */ +#line 4175 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_kw_rest_args(p, (yyvsp[0].id)); } #line 10576 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 544: /* f_args: args_tail */ -#line 4105 "mrbgems/mruby-compiler/core/parse.y" + case 524: /* f_kwrest: kwrest_mark */ +#line 4179 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_kw_rest_args(p, 0); } #line 10584 "mrbgems/mruby-compiler/core/y.tab.c" break; + case 525: /* args_tail: f_kwarg ',' f_kwrest opt_f_block_arg */ +#line 4185 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); + } +#line 10592 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 526: /* args_tail: f_kwarg opt_f_block_arg */ +#line 4189 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); + } +#line 10600 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 527: /* args_tail: f_kwrest opt_f_block_arg */ +#line 4193 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); + } +#line 10608 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 528: /* args_tail: f_block_arg */ +#line 4197 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); + } +#line 10616 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 529: /* opt_args_tail: ',' args_tail */ +#line 4203 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = (yyvsp[0].nd); + } +#line 10624 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 530: /* opt_args_tail: %empty */ +#line 4207 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args_tail(p, 0, 0, 0); + } +#line 10632 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 531: /* f_args: f_arg ',' f_optarg ',' f_rest_arg opt_args_tail */ +#line 4213 "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 10640 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 532: /* f_args: f_arg ',' f_optarg ',' f_rest_arg ',' f_arg opt_args_tail */ +#line 4217 "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 10648 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 533: /* f_args: f_arg ',' f_optarg opt_args_tail */ +#line 4221 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); + } +#line 10656 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 534: /* f_args: f_arg ',' f_optarg ',' f_arg opt_args_tail */ +#line 4225 "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 10664 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 535: /* f_args: f_arg ',' f_rest_arg opt_args_tail */ +#line 4229 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); + } +#line 10672 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 536: /* f_args: f_arg ',' f_rest_arg ',' f_arg opt_args_tail */ +#line 4233 "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 10680 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 537: /* f_args: f_arg opt_args_tail */ +#line 4237 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); + } +#line 10688 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 538: /* f_args: f_optarg ',' f_rest_arg opt_args_tail */ +#line 4241 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); + } +#line 10696 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 539: /* f_args: f_optarg ',' f_rest_arg ',' f_arg opt_args_tail */ +#line 4245 "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 10704 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 540: /* f_args: f_optarg opt_args_tail */ +#line 4249 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); + } +#line 10712 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 541: /* f_args: f_optarg ',' f_arg opt_args_tail */ +#line 4253 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); + } +#line 10720 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 542: /* f_args: f_rest_arg opt_args_tail */ +#line 4257 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); + } +#line 10728 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 543: /* f_args: f_rest_arg ',' f_arg opt_args_tail */ +#line 4261 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + } +#line 10736 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 544: /* f_args: args_tail */ +#line 4265 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); + } +#line 10744 "mrbgems/mruby-compiler/core/y.tab.c" + break; + case 545: /* f_args: %empty */ -#line 4109 "mrbgems/mruby-compiler/core/parse.y" +#line 4269 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, 0); (yyval.nd) = new_args(p, 0, 0, 0, 0, 0); } -#line 10593 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10753 "mrbgems/mruby-compiler/core/y.tab.c" break; case 546: /* f_bad_arg: "constant" */ -#line 4116 "mrbgems/mruby-compiler/core/parse.y" +#line 4276 "mrbgems/mruby-compiler/core/parse.y" { yyerror(&(yylsp[0]), p, "formal argument cannot be a constant"); (yyval.nd) = 0; } -#line 10602 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10762 "mrbgems/mruby-compiler/core/y.tab.c" break; case 547: /* f_bad_arg: "instance variable" */ -#line 4121 "mrbgems/mruby-compiler/core/parse.y" +#line 4281 "mrbgems/mruby-compiler/core/parse.y" { yyerror(&(yylsp[0]), p, "formal argument cannot be an instance variable"); (yyval.nd) = 0; } -#line 10611 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10771 "mrbgems/mruby-compiler/core/y.tab.c" break; case 548: /* f_bad_arg: "global variable" */ -#line 4126 "mrbgems/mruby-compiler/core/parse.y" +#line 4286 "mrbgems/mruby-compiler/core/parse.y" { yyerror(&(yylsp[0]), p, "formal argument cannot be a global variable"); (yyval.nd) = 0; } -#line 10620 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10780 "mrbgems/mruby-compiler/core/y.tab.c" break; case 549: /* f_bad_arg: "class variable" */ -#line 4131 "mrbgems/mruby-compiler/core/parse.y" +#line 4291 "mrbgems/mruby-compiler/core/parse.y" { yyerror(&(yylsp[0]), p, "formal argument cannot be a class variable"); (yyval.nd) = 0; } -#line 10629 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10789 "mrbgems/mruby-compiler/core/y.tab.c" break; case 550: /* f_bad_arg: "numbered parameter" */ -#line 4136 "mrbgems/mruby-compiler/core/parse.y" +#line 4296 "mrbgems/mruby-compiler/core/parse.y" { yyerror(&(yylsp[0]), p, "formal argument cannot be a numbered parameter"); (yyval.nd) = 0; } -#line 10638 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10798 "mrbgems/mruby-compiler/core/y.tab.c" break; case 551: /* f_norm_arg: f_bad_arg */ -#line 4143 "mrbgems/mruby-compiler/core/parse.y" +#line 4303 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = 0; } -#line 10646 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10806 "mrbgems/mruby-compiler/core/y.tab.c" break; case 552: /* f_norm_arg: "local variable or method" */ -#line 4147 "mrbgems/mruby-compiler/core/parse.y" +#line 4307 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); (yyval.id) = (yyvsp[0].id); } -#line 10655 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10815 "mrbgems/mruby-compiler/core/y.tab.c" break; case 553: /* f_arg_item: f_norm_arg */ -#line 4154 "mrbgems/mruby-compiler/core/parse.y" +#line 4314 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_arg(p, (yyvsp[0].id)); } -#line 10663 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10823 "mrbgems/mruby-compiler/core/y.tab.c" break; case 554: /* @32: %empty */ -#line 4158 "mrbgems/mruby-compiler/core/parse.y" +#line 4318 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = local_switch(p); } -#line 10671 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10831 "mrbgems/mruby-compiler/core/y.tab.c" break; case 555: /* f_arg_item: tLPAREN @32 f_margs rparen */ -#line 4162 "mrbgems/mruby-compiler/core/parse.y" +#line 4322 "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 10681 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10841 "mrbgems/mruby-compiler/core/y.tab.c" break; case 556: /* f_arg: f_arg_item */ -#line 4170 "mrbgems/mruby-compiler/core/parse.y" +#line 4330 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 10689 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10849 "mrbgems/mruby-compiler/core/y.tab.c" break; case 557: /* f_arg: f_arg ',' f_arg_item */ -#line 4174 "mrbgems/mruby-compiler/core/parse.y" +#line 4334 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 10697 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10857 "mrbgems/mruby-compiler/core/y.tab.c" break; case 558: /* f_opt_asgn: "local variable or method" '=' */ -#line 4180 "mrbgems/mruby-compiler/core/parse.y" +#line 4340 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[-1].id)); local_nest(p); (yyval.id) = (yyvsp[-1].id); } -#line 10707 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10867 "mrbgems/mruby-compiler/core/y.tab.c" break; case 559: /* f_opt: f_opt_asgn arg */ -#line 4188 "mrbgems/mruby-compiler/core/parse.y" +#line 4348 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(sym_to_node((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 10717 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10877 "mrbgems/mruby-compiler/core/y.tab.c" break; case 560: /* f_block_opt: f_opt_asgn primary_value */ -#line 4196 "mrbgems/mruby-compiler/core/parse.y" +#line 4356 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(sym_to_node((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 10727 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10887 "mrbgems/mruby-compiler/core/y.tab.c" break; case 561: /* f_block_optarg: f_block_opt */ -#line 4204 "mrbgems/mruby-compiler/core/parse.y" +#line 4364 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 10735 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10895 "mrbgems/mruby-compiler/core/y.tab.c" break; case 562: /* f_block_optarg: f_block_optarg ',' f_block_opt */ -#line 4208 "mrbgems/mruby-compiler/core/parse.y" +#line 4368 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 10743 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10903 "mrbgems/mruby-compiler/core/y.tab.c" break; case 563: /* f_optarg: f_opt */ -#line 4214 "mrbgems/mruby-compiler/core/parse.y" +#line 4374 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 10751 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10911 "mrbgems/mruby-compiler/core/y.tab.c" break; case 564: /* f_optarg: f_optarg ',' f_opt */ -#line 4218 "mrbgems/mruby-compiler/core/parse.y" +#line 4378 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 10759 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10919 "mrbgems/mruby-compiler/core/y.tab.c" break; case 567: /* f_rest_arg: restarg_mark "local variable or method" */ -#line 4228 "mrbgems/mruby-compiler/core/parse.y" +#line 4388 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); (yyval.id) = (yyvsp[0].id); } -#line 10768 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10928 "mrbgems/mruby-compiler/core/y.tab.c" break; case 568: /* f_rest_arg: restarg_mark */ -#line 4233 "mrbgems/mruby-compiler/core/parse.y" +#line 4393 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(mul); local_add_f(p, (yyval.id)); } -#line 10777 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10937 "mrbgems/mruby-compiler/core/y.tab.c" break; case 571: /* f_block_arg: blkarg_mark "local variable or method" */ -#line 4244 "mrbgems/mruby-compiler/core/parse.y" +#line 4404 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = (yyvsp[0].id); } -#line 10785 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10945 "mrbgems/mruby-compiler/core/y.tab.c" break; case 572: /* f_block_arg: blkarg_mark */ -#line 4248 "mrbgems/mruby-compiler/core/parse.y" +#line 4408 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = intern_op(and); } -#line 10793 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10953 "mrbgems/mruby-compiler/core/y.tab.c" break; case 573: /* opt_f_block_arg: ',' f_block_arg */ -#line 4254 "mrbgems/mruby-compiler/core/parse.y" +#line 4414 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = (yyvsp[0].id); } -#line 10801 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10961 "mrbgems/mruby-compiler/core/y.tab.c" break; case 574: /* opt_f_block_arg: none */ -#line 4258 "mrbgems/mruby-compiler/core/parse.y" +#line 4418 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = 0; } -#line 10809 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10969 "mrbgems/mruby-compiler/core/y.tab.c" break; case 575: /* singleton: var_ref */ -#line 4264 "mrbgems/mruby-compiler/core/parse.y" +#line 4424 "mrbgems/mruby-compiler/core/parse.y" { prohibit_literals(p, (yyvsp[0].nd)); (yyval.nd) = (yyvsp[0].nd); if (!(yyval.nd)) (yyval.nd) = new_nil(p); } -#line 10819 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10979 "mrbgems/mruby-compiler/core/y.tab.c" break; case 576: /* $@33: %empty */ -#line 4269 "mrbgems/mruby-compiler/core/parse.y" +#line 4429 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_BEG;} -#line 10825 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10985 "mrbgems/mruby-compiler/core/y.tab.c" break; case 577: /* singleton: '(' $@33 expr rparen */ -#line 4270 "mrbgems/mruby-compiler/core/parse.y" +#line 4430 "mrbgems/mruby-compiler/core/parse.y" { prohibit_literals(p, (yyvsp[-1].nd)); (yyval.nd) = (yyvsp[-1].nd); } -#line 10834 "mrbgems/mruby-compiler/core/y.tab.c" +#line 10994 "mrbgems/mruby-compiler/core/y.tab.c" break; case 579: /* assoc_list: assocs trailer */ -#line 4278 "mrbgems/mruby-compiler/core/parse.y" +#line 4438 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 10842 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11002 "mrbgems/mruby-compiler/core/y.tab.c" break; case 580: /* assocs: assoc */ -#line 4284 "mrbgems/mruby-compiler/core/parse.y" +#line 4444 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 10850 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11010 "mrbgems/mruby-compiler/core/y.tab.c" break; case 581: /* assocs: assocs comma assoc */ -#line 4288 "mrbgems/mruby-compiler/core/parse.y" +#line 4448 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 10858 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11018 "mrbgems/mruby-compiler/core/y.tab.c" break; case 582: /* assoc: arg "=>" arg */ -#line 4294 "mrbgems/mruby-compiler/core/parse.y" +#line 4454 "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 10868 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11028 "mrbgems/mruby-compiler/core/y.tab.c" break; case 583: /* assoc: "local variable or method" "label" arg */ -#line 4300 "mrbgems/mruby-compiler/core/parse.y" +#line 4460 "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 10877 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11037 "mrbgems/mruby-compiler/core/y.tab.c" break; case 584: /* assoc: "local variable or method" "label" */ -#line 4305 "mrbgems/mruby-compiler/core/parse.y" +#line 4465 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(new_sym(p, (yyvsp[-1].id)), label_reference(p, (yyvsp[-1].id))); } -#line 10885 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11045 "mrbgems/mruby-compiler/core/y.tab.c" break; case 585: /* assoc: "numbered parameter" "label" */ -#line 4309 "mrbgems/mruby-compiler/core/parse.y" +#line 4469 "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 10894 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11054 "mrbgems/mruby-compiler/core/y.tab.c" break; case 586: /* assoc: "numbered parameter" "label" arg */ -#line 4314 "mrbgems/mruby-compiler/core/parse.y" +#line 4474 "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 10903 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11063 "mrbgems/mruby-compiler/core/y.tab.c" break; case 587: /* assoc: string_fragment "label" arg */ -#line 4319 "mrbgems/mruby-compiler/core/parse.y" +#line 4479 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); if (node_to_type((yyvsp[-2].nd)->car) == NODE_DSTR) { @@ -10913,75 +11073,75 @@ yyreduce: (yyval.nd) = cons(new_sym(p, new_strsym(p, (yyvsp[-2].nd))), (yyvsp[0].nd)); } } -#line 10917 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11077 "mrbgems/mruby-compiler/core/y.tab.c" break; case 588: /* assoc: "**" arg */ -#line 4329 "mrbgems/mruby-compiler/core/parse.y" +#line 4489 "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 10926 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11086 "mrbgems/mruby-compiler/core/y.tab.c" break; case 589: /* assoc: "**" */ -#line 4334 "mrbgems/mruby-compiler/core/parse.y" +#line 4494 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(new_kw_rest_args(p, 0), new_lvar(p, intern_op(pow))); } -#line 10934 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11094 "mrbgems/mruby-compiler/core/y.tab.c" break; case 602: /* call_op: '.' */ -#line 4360 "mrbgems/mruby-compiler/core/parse.y" +#line 4520 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = '.'; } -#line 10942 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11102 "mrbgems/mruby-compiler/core/y.tab.c" break; case 603: /* call_op: "&." */ -#line 4364 "mrbgems/mruby-compiler/core/parse.y" +#line 4524 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = 0; } -#line 10950 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11110 "mrbgems/mruby-compiler/core/y.tab.c" break; case 605: /* call_op2: "::" */ -#line 4371 "mrbgems/mruby-compiler/core/parse.y" +#line 4531 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = tCOLON2; } -#line 10958 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11118 "mrbgems/mruby-compiler/core/y.tab.c" break; case 614: /* term: ';' */ -#line 4392 "mrbgems/mruby-compiler/core/parse.y" +#line 4552 "mrbgems/mruby-compiler/core/parse.y" {yyerrok;} -#line 10964 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11124 "mrbgems/mruby-compiler/core/y.tab.c" break; case 616: /* nl: '\n' */ -#line 4397 "mrbgems/mruby-compiler/core/parse.y" +#line 4557 "mrbgems/mruby-compiler/core/parse.y" { p->lineno += (yyvsp[0].num); p->column = 0; } -#line 10973 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11133 "mrbgems/mruby-compiler/core/y.tab.c" break; case 620: /* none: %empty */ -#line 4409 "mrbgems/mruby-compiler/core/parse.y" +#line 4569 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 10981 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11141 "mrbgems/mruby-compiler/core/y.tab.c" break; -#line 10985 "mrbgems/mruby-compiler/core/y.tab.c" +#line 11145 "mrbgems/mruby-compiler/core/y.tab.c" default: break; } @@ -11214,7 +11374,7 @@ yyreturnlab: return yyresult; } -#line 4413 "mrbgems/mruby-compiler/core/parse.y" +#line 4573 "mrbgems/mruby-compiler/core/parse.y" #define pylval (*((YYSTYPE*)(p->ylval))) @@ -13760,7 +13920,7 @@ mrb_parser_new(mrb_state *mrb) p->var_alloc_counts[i] = 0; } p->var_total_allocated = 0; - p->var_nodes_enabled = FALSE; /* Start disabled for compatibility */ + p->var_nodes_enabled = TRUE; /* Enable variable-sized nodes by default */ return p; }