>>524 = >>533 ?
どうなってんのかよくわからないけど、せっかくだから返事しとく。

うーん、なんか誤解されてると思う。「実行中に構文解析するのか」という
書き方が悪かったんだろうけど、これは >>518 が「rb_eval(動的評価)」って
言うから、昔のインタプリタみたいに構文解析と評価が混じってるような
感じを想定してるのかと勘繰ってみただけ。つまり、「評価器が構文解析
するのか?」という問いであって、「評価中に構文解析が起こるか?」という
一般的な問いじゃない。そりゃもちろんeval呼べばそのときは構文解析するし
requireでもloadでもrb_eval_stringでも、構文解析はやるに決まってる。
言いたかったのは、たとえばevalなら、「その引数の文字列に関しては」
構文解析をするのは一番初めにまとめて、ただ一回だけだろ、ということ。

ところでローカル変数云々って言う話があるけど、それは違うんでない?
eval のときだって文字列は同じパーサを通るんだから、ローカル変数の
オフセットを計算できないわけないじゃない。eval で導入したブロック変数
はその eval の中からしか見えないから、コンパイル時に参照を解決可能。
eval から eval 外で定義した変数を参照した場合も、「上」のスコープは
厳密に定まるからコンパイル時に計算可能。Procまで含めても、すべての
ローカル変数参照はコンパイル時に解決可能だと思うが。