[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]