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

yarv-dev:35

From: SASADA Koichi <ko1 atdot.net>
Date: Tue, 18 May 2004 23:57:15 +0900
Subject: [yarv-dev:35] how to initialize ruby environment?

 ささだです。

 Kernel#load では、環境が一時リセットされた状態(という表現が
正しいかはわかりませんが)でスクリプトをパースし、実行している
ように思います。

 つまり、

class C
  def m
    load 'hoge'
  end
end

C.new.m

 すると、self = instanceof(C) の環境で実行されるわけではなく、
バインディングがトップレベルで実行されます。ああ、釈迦に説法。

 で、YARVCore.load みたいなの(トップレベル環境でパースして、
そいつを YARV で実行)を作りたいのですが、パース時の環境
(ruby_frame みたいなの)をトップレベルに戻す方法がわかり
ません。

 ruby.c とか eval.c とかその辺を見てみたんですが、状態用変数
についていろんなことしてるようで、どれがどれだかさっぱりわかり
ません。

 パーサをトップレベルの環境で走らせるために、どの辺のグローバ
ル変数の退避が必要か、アドバイス頂けませんでしょうか。



----

 関係ないんですけど、load(file, true) はファイルを渡しますが、
これに文字列を渡して priv=true 環境で eavl するようなことはし
ないのでしょうか。





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

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

->      35 2004-05-18 23:57 [ko1 atdot.net       ] how to initialize ruby environment?     
        36 2004-05-19 11:59 ┗[matz ruby-lang.org  ]                                       
        37 2004-05-19 12:14  ┣[shugo ruby-lang.org ]                                     
        39 2004-05-19 20:14  ┃┗[ko1 atdot.net       ]                                   
        38 2004-05-19 20:12  ┗[ko1 atdot.net       ]