自己反映言語のコンパイルに向け、今年度はその基礎技術である部分評価方の研究を行なった。部分評価器を自己反映言語のコンパイラとして使用するためには、使用する部分評価器が(1)十分、強力で、かつ(2)効率的に動くこと、の2点が重要である。このうち第1点目の部分評価能力については、部分評価時に各式の値とコードの両方を保持することが重要であることを発見し、国際学会にて発表した。この方法を使うと、副作用を持った命令やオブジェクトのidを使ったプログラムでも正しく扱うことがきるようになる。しかし、この方法はonlineの部分評価であったため、効率に問題があった。そこで、第2点目の効率の問題を克服すべく、この部分評価器を現在offlineの枠組で作成している。すでに、その核となる特化部については完成しており、この部分評価法がofflineの枠組でも動作することを確認している。さらにこの部分評価器を自己適用することで実用的な時間でコンパイラジェネレータを生成することにも成功している。自己反映言語のインタプリタと部分評価器が同程度の複雑度を持っていることを考えると、これは、この部分評価器が十分強力であると同時に、大きなプログラムを部分評価しても効率的に動くことを示している。 来年度は、現段階ではまだできていない束縛時解析部を作成して部分評価器を完成させるとともに、それを使って自己反映言語のコンパイルを行う予定である。
|