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 ]