yarv-dev:592
From: SASADA Koichi <ko1 atdot.net>
Date: Fri, 19 Aug 2005 08:34:04 +0900
Subject: [yarv-dev:592] Re: parser restructuring
ささだです。 Nobuyoshi Nakada wrote: > dnamesはブロックを抜けても取り除かれないので、そのままでは無理 > だと思います。生きている名前とそうでないものを区別するようにし > て、ブロックを抜けるときにチェックするようにすれば可能かも知れ > ません。 dyna_push で新しい dnames を push (前の dnames へアクセスできるようス タックにしておく)、dyna_pop で表を pop すればいいと思っていました。どう でしょうか。 さっき IRC で out-of-scope variable を解析するために必要、ということで したが、すみません、これどうやって発生するんでしょうか。考えてみたんです が、わかりませんでした。 >>(出来れば、dnames もどっかに持っておいてもらえると、YARV でコンパイルす >>るときに大変楽なんだけど) > > > どっかというのは? > NODE_SCOPE は nd_tbl に ID 表を持ってますが、そいつみたいな。 現在は、「ブロックの先頭の massign/assign を解析してブロック引数を取り 出し」、それに続く「NODE_DASGN_CURR によるブロックローカル変数の初期化」 でブロックローカル変数を取り出すという、かなり無意味な処理を入れていま す。ただし、これだと、ブロック引数中に任意の式が入るので、解析が面倒です。 iter{|a[expr]| ...} だと、expr に入っているブロックローカル変数は取り出すことが出来ませ ん。がんばれば出来るけど、ちょっと面倒です。 dnames があれば、この苦労が一切必要なくなる、という意味です。ただ、こ れは現在の Ruby インタプリタには意味がないので、今回の話とはかなり無関係 です。 -- SASADA Koichi at atdot dot net -- ML: yarv-dev quickml.atdot.net 使い方: http://www.atdot.net/~ko1/quickml
590 2005-08-19 04:51 [ko1 atdot.net ] parser restructuring 591 2005-08-19 06:57 ┗[nobu.nokada softhome] -> 592 2005-08-19 08:34 ┗[ko1 atdot.net ] 593 2005-08-19 09:08 ┗[ko1 atdot.net ]