平成21年度は、変換対象言語を複数個の宣言を許すlet式を持つラムダ式とし、プログラム開発支援システムの最も基本となる機能の1つである変数名補完機能について基本方式の提案および実装を行った。変数名補完はEclipseやVisual Studio等の開発環境で広く利用されている機能であるが、CやJava等、型がソースコード中に明示的に記述される言語を対象としたものであった。本年度提案、実装しためは、型がソースコード中に必ずしも記述されなくてもよいStandard MLやHaskellといった型推論機構を持つ言語を対象としたものであり、一例としてStandard MLのサブセット上で補完方式を提示し、Emacsモードとして実装を行った。変数名補完においては作成途中のソースコードを用いるため、不完全な情報で型推論を行わなければならないが、本年度はカーソル位置より前のプログラムが完全に与えられており、カーソル位置より後の情報は一切用いないという前提で補完方式を構築した。この方式ではダミー要素、カーソル要素という特別な構文木を導入することにより、不完全なプログラムから構文木を生成し、型推論を行い、カーソル位置において有効な変数から型が合わない変数を除外することにより補完候補となる変数を求める。この成果を第12回プログラミングおよびプログラミング言語ワークショップにおいて発表した。この方式では一般に構文木の補い方が無限にあり、何らかの基準で有限個に抑える必要があるが、最も単純な基準として、構文木の深さに閾値を設けることにより生成する構文木を有限個とした。
|