研究概要 |
自己拡張可能な文法体系として,Reflective Context-Free Grammarを提案し、その文法の成す言語クラスが文脈自由言語と文脈依存言語の中間であること、導出過程における性質、入力文字列の長さnに対しnの5乗のオーダーの構文解析アルゴリズムが存在すること、また、そのアルゴリズムにおいて、動的に新たに付加された構文規則の数mに対し、指数オーダーとなることを示した。 また、自己拡張可能な文法を持つプログラミング言語開発ツールとして、これまで種々のプログラミング言語の構文解析系記述/生成の為に用いられているYACC/Bisonの拡張を試みている。その前段階として、YACC/Bisonで用いられているLALR(1)構文解析系の差分的構成法を提案した。これまで、LALR(1)構文解析系の差分的構成法は、プログラミング言語開発環境における文法デバッグ等の為のものとして提案されたものがあるが、既存の差分的構成法では、LALR(1)構文解析表作成の基礎となるLR(0)状態遷移グラフのみの差分的構成法となっており、先読み記号の計算に関しては、YACC等で用いられている伝統的な方法の枠を超えるものではなく、差分的構成法とは言い難いものである。これに対し、本研究で提案した方法は、先読み記号の計算も差分的に計算する為の、ε導出可能性条件の表現方法、ε導出可能性条件を含む終端記号列の導出可能性を含む、各種の概念、枠組みを提案した。この中には、LALR(1)構文解析表の「真の」差分的構成法となるよう、LR(0)状態遷移グラフの状態識別法の見直しも行った。さらに、自己拡張可能なプログラミング言語の構文解析系記述体系として実用に耐え得るよう、差分的計算に必要な記憶領域を節約する為の方法論を提案し、プロトタイプを作成し、その実効性を確認した。
|