研究概要 |
本研究の目的は,あるデータを別のデータへと変換する通常の変換から,変換後のデータに加えた変更を対応するように元のデータに書き戻しを行う逆方向の変換を,形式文法の知見を利用し導出すること(双方向化)である.本年度は昨年度得た知見をまとめ発表した. 本年度の主な成果は,累積変数やデータの複数回走査を持つあるクラスのプログラムに対する多項式時間逆計算手法を提案したことである.逆計算は,双方化の一種であり,プログラムとその出力が与えられたときにその出力に対応した入力を全て求める計算である.逆計算の応用としては,直列化器から非直列化器の作成,XML相互変換の実現,Undo/Redo機構の実装,効率的なテストケース生成など様々な例が知られている.本研究は,対象とするプログラムを適切に制限することで多項式時間の逆計算を実現した.これまでも対象を制限し効率的な逆計算を目指した研究はあったが,それらの扱えるプログラムはとても限定されたものであった.本手法が対象とするプログラムは,制限されてはいるものの,たとえば多くの線形サイズ増大なXSLTを表現可能である.本研究の面白さの一つは,これまで取り扱いが難しいとされ,アドホックに扱われてきた累積的計算や複数回走査を持つプログラムを,適切な制限により,系統的に扱っている点である.提案逆計算手法は,大雑把にはCYK構文解析の木への拡張になっている. また,特定プログラム言語で記述されたグラフ変換の効率化の研究も行った.この研究はプログラムの解析により不要な関数呼出・合成を消すことでプログラムの効率化を図る.この研究は,一見本研究の目的である「形式文法を利用した双方向化」に関連しないように思えるが,現在の形式文法を利用したアプローチは関数合成を含むプログラムの取り扱いを苦手としているため,形式文法を利用した双方向化の適用可能性を高める上で有用であることが期待できる.
|