[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:15

From: SASADA Koichi <ko1 atdot.net>
Date: Mon, 17 May 2004 04:14:27 +0900
Subject: [yarv-dev:15] initialize block local variables

 ささだです。

 NODE_ITER 以下の構文木を見ていたんですが、


m{
  a = 1
  b = 2
  p 1
  c = 3
}

 をコンパイルすると、

node: NODE_ITER
nd_body:
  node: NODE_BLOCK
    node: NODE_DASGN_CURR
      node: NODE_DASGN_CURR
        node: NODE_DASGN_CURR
          (0 なので、暗黙に NODE_NIL が追加される)、つまり a=b=c=nil
    node: NODE_BLOCK
      node: NODE_DASGN_CURR
        node: NODE_LIT
      node: NODE_BLOCK
        node: NODE_DASGN_CURR
          node: NODE_LIT
        node: NODE_BLOCK
          node: NODE_FCALL
            node: NODE_ARRAY
              node: NODE_LIT
          node: NODE_BLOCK
            node: NODE_DASGN_CURR
              node: NODE_LIT
nd_iter:
  node: NODE_FCALL
nd_var:


のようなツリーを得ました。


 これを見てみると、そのブロック内でのブロックローカル変数は、
すべて一番最初に nil で初期化しているようです。


 たとえば、これを利用して、ブロック中のブロックローカル変数一覧を
構文木から得るとき、最初の NODE_DASGN_CURR のリストを見るだけ、とい
う手は使えるでしょうか。

 あと、nd_var の部分を見る必要があるとは思いますが。


--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

->      15 2004-05-17 04:14 [ko1 atdot.net       ] initialize block local variables        
        16 2004-05-17 08:38 ┗[matz ruby-lang.org  ]                                       
        17 2004-05-17 10:37  ┣[ko1 atdot.net       ]                                     
        20 2004-05-17 13:23  ┃┗[matz ruby-lang.org  ]                                   
        22 2004-05-17 15:58  ┃ ┗[ko1 atdot.net       ]                                 
        23 2004-05-17 16:14  ┃  ┗[matz ruby-lang.org  ]                               
        24 2004-05-17 16:58  ┃   ┗[ko1 namikilab.tuat.a]                             
        25 2004-05-17 17:27  ┃    ┗[matz ruby-lang.org  ]                           
        26 2004-05-17 18:09  ┃     ┗[ko1 atdot.net       ]                         
        27 2004-05-17 18:38  ┃      ┗[matz ruby-lang.org  ]                       
        21 2004-05-17 13:45  ┗[nobu.nokada softhome]