[#17276] blocks and local variables — Takaaki Tateishi <ttate@...>

立石です.

127 messages 2002/06/02
[#17283] Re: blocks and local variables — matz@... (Yukihiro Matsumoto) 2002/06/02

まつもと ゆきひろです

[#17294] Re: blocks and local variables — Takaaki Tateishi <ttate@...> 2002/06/03

At Mon, 3 Jun 2002 06:26:56 +0900,

[#17298] Re: blocks and local variables — matz@... (Yukihiro Matsumoto) 2002/06/03

まつもと ゆきひろです

[#17332] Re: blocks and local variables — nobu.nakada@... 2002/06/06

なかだです。

[#17336] Re: blocks and local variables — matz@... (Yukihiro Matsumoto) 2002/06/07

まつもと ゆきひろです

[#17337] Re: blocks and local variables — nobu.nakada@... 2002/06/07

なかだです。

[#17338] Re: blocks and local variables — matz@... (Yukihiro Matsumoto) 2002/06/07

まつもと ゆきひろです

[#17339] Re: blocks and local variables — Tanaka Akira <akr@...17n.org> 2002/06/07

In article <1023423387.175193.27185.nullmailer@picachu.netlab.jp>,

[#17347] Re: blocks and local variables — Takaaki Tateishi <ttate@...> 2002/06/07

At Fri, 7 Jun 2002 13:23:37 +0900,

[#17352] Re: blocks and local variables — matz@... (Yukihiro Matsumoto) 2002/06/07

まつもと ゆきひろです

[#17404] Re: blocks and local variables — "K.Kosako" <kosako@...> 2002/06/12

Yukihiro Matsumotoさんの

[#17411] Re: blocks and local variables — matz@... (Yukihiro Matsumoto) 2002/06/12

まつもと ゆきひろです

[#17518] Re: blocks and local variables — "K.Kosako" <kosako@...> 2002/06/19

Yukihiro Matsumotoさんの

[#17521] Re: blocks and local variables — nobu.nakada@... 2002/06/19

なかだです。

[#17524] Re: blocks and local variables — "K.Kosako" <kosako@...> 2002/06/19

nobu.nakada@nifty.ne.jpさんの

[#17528] Re: blocks and local variables — matz@... (Yukihiro Matsumoto) 2002/06/20

まつもと ゆきひろです

[#17459] Re: blocks and local variables — NISHIO Mizuho <gha@...> 2002/06/16

どうも西尾です。

[#17460] Re: blocks and local variables — nobu.nakada@... 2002/06/16

なかだです。

[#17462] Re: blocks and local variables — Takaaki Tateishi <ttate@...> 2002/06/16

At Sun, 16 Jun 2002 10:40:40 +0900,

[#17464] Re: blocks and local variables — nobu.nakada@... 2002/06/16

なかだです。

[#17367] Ruby bcc32 on Win32 版のコミットについて — 小西 弘将 <konishih@...6.so-net.ne.jp>

小西 弘将です。

17 messages 2002/06/10
[#17368] Re: Ruby bcc32 on Win32 版のコミットについて — matz@... (Yukihiro Matsumoto) 2002/06/10

まつもと ゆきひろです

[#17369] Re: Ruby bcc32 on Win32 版のコミットについて — 小西 弘将 <konishih@...6.so-net.ne.jp> 2002/06/11

 小西 弘将です。

[#17370] Re: Ruby bcc32 on Win32 版のコミットについて — "U.Nakamura" <usa@...> 2002/06/11

こんにちは、なかむら(う)です。

[#17421] broken string when unterminated "#{". — WATANABE Hirofumi <eban@...>

わたなべです。

43 messages 2002/06/13
[#17422] Re: broken string when unterminated "#{". — matz@... (Yukihiro Matsumoto) 2002/06/13

まつもと ゆきひろです

[#17423] Re: broken string when unterminated "#{". — Tanaka Akira <akr@...17n.org> 2002/06/13

In article <1023943870.232495.9282.nullmailer@picachu.netlab.jp>,

[#17425] Re: broken string when unterminated "#{". — matz@... (Yukihiro Matsumoto) 2002/06/13

まつもと ゆきひろです

[#17426] Re: broken string when unterminated "#{". — Tanaka Akira <akr@...17n.org> 2002/06/13

In article <1023945463.297286.10112.nullmailer@picachu.netlab.jp>,

[#17439] Re: broken string when unterminated "#{". — nobu.nakada@... 2002/06/13

なかだです。

[#17440] Re: broken string when unterminated "#{". — matz@... (Yukihiro Matsumoto) 2002/06/13

まつもと ゆきひろです

[#17442] Re: broken string when unterminated "#{". — Tanaka Akira <akr@...17n.org> 2002/06/14

In article <1023987024.717469.15784.nullmailer@picachu.netlab.jp>,

[#17530] Re: broken string when unterminated "#{". — nobu.nakada@... 2002/06/21

なかだです。

[#17532] Re: broken string when unterminated "#{". — matz@... (Yukihiro Matsumoto) 2002/06/21

まつもと ゆきひろです

[#17539] Re: broken string when unterminated "#{". — Tanaka Akira <akr@...17n.org> 2002/06/21

In article <1024642728.541545.22623.nullmailer@picachu.netlab.jp>,

[#17540] Re: broken string when unterminated "#{". — matz@... (Yukihiro Matsumoto) 2002/06/21

まつもと ゆきひろです

[#17541] Re: broken string when unterminated "#{". — nobu.nakada@... 2002/06/21

なかだです。

[#17430] return value from methods of Array's subclass — "Shin'ya Adzumi" <adzumi@...>

あづみです。

12 messages 2002/06/13

[#17446] ternary operator and char literal (Re: parse error with `true || break ? 0 : 1' (PR#261)) — nobu.nakada@...

なかだです。

13 messages 2002/06/15
[#17454] Re: ternary operator and char literal (Re: parse error with `true || break ? 0 : 1' (PR#261)) — matz@... (Yukihiro Matsumoto) 2002/06/15

まつもと ゆきひろです

[#17461] Re: ternary operator and char literal (Re: parse error with `true || break ? 0 : 1' (PR#261)) — nobu.nakada@... 2002/06/16

なかだです。

[#17513] __END__ in literal — nobu.nakada@...

なかだです。

17 messages 2002/06/18
[#17516] Re: __END__ in literal — matz@... (Yukihiro Matsumoto) 2002/06/18

まつもと ゆきひろです

[ruby-dev:17493] [PATCH] reduce recursion level

From: nobu.nakada@...
Date: 2002-06-17 13:59:18 UTC
List: ruby-dev #17493
なかだです。

value_expr()と連続する論理演算子で再帰レベルを減らすパッチです。


Index: parse.y
===================================================================
RCS file: /cvs/ruby/src/ruby/parse.y,v
retrieving revision 1.184
diff -u -2 -p -w -r1.184 parse.y
--- parse.y	2002/06/14 06:27:18	1.184
+++ parse.y	2002/06/17 13:48:51
@@ -4644,6 +4644,5 @@ value_expr(node)
     NODE *node;
 {
-    if (node == 0) return Qtrue;
-
+    while (node) {
     switch (nd_type(node)) {
       case NODE_CLASS:
@@ -4667,18 +4666,24 @@ value_expr(node)
 	    node = node->nd_next;
 	}
-	return value_expr(node->nd_head);
+	    node = node->nd_head;
+	    break;
 
       case NODE_BEGIN:
-	return value_expr(node->nd_body);
+	    node = node->nd_body;
+	    break;
 
       case NODE_IF:
-	return value_expr(node->nd_body) && value_expr(node->nd_else);
+	    if (!value_expr(node->nd_body)) return Qfalse;
+	    node = node->nd_else;
+	    break;
 
       case NODE_AND:
       case NODE_OR:
-	return value_expr(node->nd_2nd);
+	    node = node->nd_2nd;
+	    break;
 
       case NODE_NEWLINE:
-	return value_expr(node->nd_next);
+	    node = node->nd_next;
+	    break;
 
       default:
@@ -4687,4 +4692,7 @@ value_expr(node)
 }
 
+    return Qtrue;
+}
+
 static void
 void_expr(node)
@@ -4959,4 +4967,8 @@ logop(type, left, right)
 {
     value_expr(left);
+    if (nd_type(left) == type) {
+	NODE *node = left;
+	while (nd_type(node->nd_2nd) == type) {
+	    node = node->nd_2nd;
+	}
+	node->nd_2nd = rb_node_newnode(type, node->nd_2nd, right, 0);
+	return left;
+    }
     return rb_node_newnode(type, left, right, 0);
 }


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread

Prev Next