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

ruby-changes:49754

From: nobu <ko1@a...>
Date: Tue, 16 Jan 2018 17:06:02 +0900 (JST)
Subject: [ruby-changes:49754] nobu:r61872 (trunk): parse.y: simplified compstmt

nobu	2018-01-16 17:05:57 +0900 (Tue, 16 Jan 2018)

  New Revision: 61872

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=61872

  Log:
    parse.y: simplified compstmt
    
    * parse.y (top_compstmt, compstmt): unified void_stmts with
      ripper.

  Modified files:
    trunk/parse.y
Index: parse.y
===================================================================
--- parse.y	(revision 61871)
+++ parse.y	(revision 61872)
@@ -363,7 +363,7 @@ static void void_expr(struct parser_para https://github.com/ruby/ruby/blob/trunk/parse.y#L363
 static NODE *remove_begin(NODE*);
 static NODE *remove_begin_all(NODE*);
 #define value_expr(node) value_expr_gen(p, (node) = remove_begin(node))
-static void void_stmts(struct parser_params*,NODE*);
+static NODE *void_stmts(struct parser_params*,NODE*);
 static void reduce_nodes(struct parser_params*,NODE**);
 static void block_dup_check(struct parser_params*,NODE*,NODE*);
 
@@ -466,6 +466,7 @@ ripper_is_node_yylval(VALUE n) https://github.com/ruby/ruby/blob/trunk/parse.y#L466
 
 #define value_expr(node) ((void)(node))
 #define remove_begin(node) (node)
+#define void_stmts(p,x) (x)
 #define rb_dvar_defined(id, base) 0
 #define rb_local_defined(id, base) 0
 static ID ripper_get_id(VALUE);
@@ -995,11 +996,7 @@ program		:  { https://github.com/ruby/ruby/blob/trunk/parse.y#L996
 
 top_compstmt	: top_stmts opt_terms
 		    {
-		    /*%%%*/
-			void_stmts(p, $1);
-		    /*%
-		    %*/
-			$$ = $1;
+			$$ = void_stmts(p, $1);
 		    }
 		;
 
@@ -1083,11 +1080,7 @@ bodystmt	: compstmt https://github.com/ruby/ruby/blob/trunk/parse.y#L1080
 
 compstmt	: stmts opt_terms
 		    {
-		    /*%%%*/
-			void_stmts(p, $1);
-		    /*%
-		    %*/
-			$$ = $1;
+			$$ = void_stmts(p, $1);
 		    }
 		;
 
@@ -9653,18 +9646,19 @@ void_expr(struct parser_params *p, NODE https://github.com/ruby/ruby/blob/trunk/parse.y#L9646
     }
 }
 
-static void
+static NODE *
 void_stmts(struct parser_params *p, NODE *node)
 {
-    if (!RTEST(ruby_verbose)) return;
-    if (!node) return;
-    if (nd_type(node) != NODE_BLOCK) return;
+    NODE *const n = node;
+    if (!RTEST(ruby_verbose)) return n;
+    if (!node) return n;
+    if (nd_type(node) != NODE_BLOCK) return n;
 
-    for (;;) {
-	if (!node->nd_next) return;
+    while (node->nd_next) {
 	void_expr(p, node->nd_head);
 	node = node->nd_next;
     }
+    return n;
 }
 
 static NODE *

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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