ruby-changes:24773
From: nobu <ko1@a...>
Date: Sat, 25 Aug 2012 16:21:15 +0900 (JST)
Subject: [ruby-changes:24773] nobu:r36824 (trunk): parse.y: extract function
nobu 2012-08-25 16:21:07 +0900 (Sat, 25 Aug 2012) New Revision: 36824 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=36824 Log: parse.y: extract function * parse.y (new_args_tail_gen): extract from dsym rule. Modified files: trunk/parse.y Index: parse.y =================================================================== --- parse.y (revision 36823) +++ parse.y (revision 36824) @@ -393,6 +393,8 @@ static NODE *arg_blk_pass(NODE*,NODE*); static NODE *new_yield_gen(struct parser_params*,NODE*); #define new_yield(node) new_yield_gen(parser, (node)) +static NODE *dsym_node_gen(struct parser_params*,NODE*); +#define dsym_node(node) dsym_node_gen(parser, (node)) static NODE *gettable_gen(struct parser_params*,ID); #define gettable(id) gettable_gen(parser,(id)) @@ -4384,26 +4386,7 @@ { lex_state = EXPR_END; /*%%%*/ - if (!($$ = $2)) { - $$ = NEW_LIT(ID2SYM(rb_intern(""))); - } - else { - VALUE lit; - - switch (nd_type($$)) { - case NODE_DSTR: - nd_set_type($$, NODE_DSYM); - break; - case NODE_STR: - lit = $$->nd_lit; - $$->nd_lit = ID2SYM(rb_intern_str(lit)); - nd_set_type($$, NODE_LIT); - break; - default: - $$ = NEW_NODE(NODE_DSYM, Qnil, 1, NEW_LIST($$)); - break; - } - } + $$ = dsym_node($2); /*% $$ = dispatch1(dyna_symbol, $2); %*/ @@ -9420,6 +9403,31 @@ ruby_sourceline = saved_line; return node; } + +static NODE* +dsym_node_gen(struct parser_params *parser, NODE *node) +{ + VALUE lit; + + if (!node) { + return NEW_LIT(ID2SYM(idNULL)); + } + + switch (nd_type(node)) { + case NODE_DSTR: + nd_set_type(node, NODE_DSYM); + break; + case NODE_STR: + lit = node->nd_lit; + node->nd_lit = ID2SYM(rb_intern_str(lit)); + nd_set_type(node, NODE_LIT); + break; + default: + node = NEW_NODE(NODE_DSYM, Qnil, 1, NEW_LIST(node)); + break; + } + return node; +} #endif /* !RIPPER */ static void -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/