連鎖性言語を作る8

オレ言語の実装として、Rubyの配列にオブジェクトを詰めたものをASTとして扱っているのは特徴的だ。実際コード自身がオブジェクトを並べたような見た目をしているのでこれはこれで直感的とも言える。ところでVMはそのASTを解釈して実行しているわけなので、これは名前はVMだが素朴なインタプリタじゃないのか、という思いがある。今回はここを名実ともにVMにしてみよう。
ASTをもっとASTっぽくNodeなんちゃら的なクラスのインスタンスを詰めた配列にしてもいいのだが、それは単純に無駄っぽいので、ここはそのままにしておく。ASTをなんらかの命令列に変換して、VMでの実行直前にコンパイルVMコンパイル後の命令列を実行する。と言うとちょっとカッコイイのだが。

続きを読む