研究課題/領域番号 |
09780251
|
研究種目 |
奨励研究(A)
|
配分区分 | 補助金 |
研究分野 |
計算機科学
|
研究機関 | 東京大学 |
研究代表者 |
浅井 健一 東京大学, 大学院・理学系研究科, 助手 (10262156)
|
研究期間 (年度) |
1997 – 1998
|
研究課題ステータス |
完了 (1998年度)
|
配分額 *注記 |
2,000千円 (直接経費: 2,000千円)
1998年度: 600千円 (直接経費: 600千円)
1997年度: 1,400千円 (直接経費: 1,400千円)
|
キーワード | 自己反映言語 / 部分評価 / コンパイル / コンパイラジェネレータ / 副作用命令 / 関数型言語 |
研究概要 |
自己反映言語のコンパイルを目指して、おもにその基礎技術である部分評価法の研究を行った。部分評価器を自己反映言語のコンパイラとして使用するためには、使用する部分評価器が(1)十分、強力で、かつ(2)効率的に動くこと、の2点が重要である。これらに対応して以下のような結果を得た。 1. 部分評価器の能力として、構造データをきちんと扱えることが重要で、そのためには部分評価時に各式の値とコードの両方を保持することが重要であることを発見した。これに基づいて実際にonlineの部分評価器を作成し、その効果を確かめた。しかし、この方法はonlineのため効率に問題があることがわかった。 2. より効率的な部分評価を実現するべく、上記の方法をofflineに拡張する方法を提案した。この方法は、構造データをうまく扱う特化器の作成と束縛時解析器の作成というふたつの部分からなる。このうち前者は、必要に応じて値とコードの両方を保持し、かつコードの複製を避けるためコード部分を必ずlet式に残すことでうまくできることがわかった。この特化器を使って実際にいろいろな特化を行い、自己適用によるコンパイラジェネレータの作成を含めてうまく動くことを確認した。後者に関しては、従来の束縛時解析の手法を拡張することで、値とコードの両方を持つべき場所を特定できることを示した。その過程で、束縛時解析は、比較的、素直に制約を生成する型システムとして定式化できるが、制約を解くためには従来の手法と違い、2段階にわける必要があることがわかった。束縛時解析は実際に実装を行い、うまく動くことを確認した。 今後の課題としては、ここで提案した束縛時解析の多段の部分評価への応用、今回は行うことができなかった自己反映言語のコンパイルへの実際の適用などがあげられる。
|