平成22年度は、複数個の宣言を許すlet式を持つラムダ式を対象言語とし、プログラム開発支援システムの最も基本となる機能の1つである変数名補完機能について、平成21年度に開発した方式を改良した新たな方式を提案し、それに基づいた実装を行った。 昨年度までに構築した補完方式においては無限に存在する構文木を閾値を決めて有限個だけ生成していたため、本来候補になるべき変数が候補にならない場合があった。また、生成する構文木の個数が膨大であるため計算量が膨大になっていた。そこでこれらの問題を解決するため、構文木補完と型推論フェーズを連携させることにより、期待されるすべての候補を提示するアルゴリズムを構築した。このアルゴリズムは昨年度開発したアルゴリズムに比べ大幅に計算量が削減されており、実際、このアルゴリズムに基づいて実装したシステムは十分実用的な時間内で補完候補が提示されるものとなった。また、アルゴリズムの性質を示すため、変数名補完問題を、カーソル位置より前のプログラムが完全に与えられており、カーソル位置より後の情報は一切用いないという前提で定式化した。この問題設定のもとで、開発したアルゴリズムは、得られる補完候補がすべての期待される変数を含むという性質(完全性)および、含まれるべきではない変数を含まないという性質(健全性)を満たすと予想される。この成果を第13回プログラミングおよびプログラミング言語ワークショップにおいて発表した。また、カーソル位置より前のプログラムが完全であるという仮定は現実には厳しい仮定であり、この緩和を目的として、構文解析のエラー回復機能を変数名補完に応用することについて考察した。さらに、変数名付け替え機能について、Standard MLのサブセットおよびC#のサブセットを対象とし、基本方式の考察を行った。
|