2015年度は2014年度に発表したLR構文解析の誤り回復を用いた識別子補完方式をもとに、キーワード補完プログラムを構文定義から一部機械的に得る手法を考案し、試験的実装を行った。2014年度の発表においてはYaccの構文定義中にerrorという特別な字句を適切に挿入することによって入力中の不完全なプログラムにおいて有効範囲を考慮して補完候補を計算する方式を示した。この成果をもとに、errorという字句およびカーソル位置を表す字句をYaccの構文定義中に機械的に挿入し、構文解析によって得られる構文木をもとにキーワードを補完するプログラムを一部機械的に生成する方式を考案した。この成果について第18回プログラミングおよびプログラミング言語ワークショップという国内会議においてポスター・デモ発表を行った。この成果は、開発環境においてよく用いられるコード補完について、仕様が明示された補完機能の提供に向けた第一歩となるものである。また、開発環境の機能の一つとしてC言語で書かれたプログラムを対象としてバッファーオーバーフローを可視化するシステムをgdbというデバッガの機能を用いて実現する方式の考案および実装を行った。この成果はBICT 2015 Special Track on Modularization for Practical Software Engineeringという国際会議において発表した。研究期間全体を通し、関数型言語の核言語について型を考慮した識別子補完を問題として定式化し、それを解く1つのアルゴリズムを考案し、そのアルゴリズムが満たす性質を示したこと、および入力中の不完全なプログラムに対応するためにLR構文解析の誤り回復機能を用いた方式を考案、実装したこと、およびその方式をもとにキーワード補完プログラムを一部機械的に導出する方式を考案、実装したことが主な成果である。
|