1.分野をプログラム化すべき問題の記述に必要な範囲に限定して、自然語の意味の形式的な定義を行うことの前段階として、自然語による問題記述中に現れる語句の調査ならびに意味考察を行った。例題としてJacksonの本の中から幾つかの伝票処理やファイル処理の問題を選び、そこに現れる語句を抽出し、それ等の形式的意味定義を試みた。ここで、形式的意味定義とは、表現式間の合同関係や、一階述語論理の概念のみで語句の意味を定義することとした。同時に、これらの問題記述に必要な最低限の語句と文形の調査も行った。 2.「電報解析問題」を例題にして、論理的なプログラミング手法を提案した。これはBNFで書かれた問題の仕様から、DCGを介して、Prologプログラムを導く方法であり、まず入力および出力データの構造とBNFで書くことから始まる。DCGへの入力は自動的に構文解析木に変換されるため、入力データの構文解析を明示的に行う必要はなく、また出力データ構造の構文的な生成を明示的に行う必要もないという特長をもつ。そして、BNFの各非終端記号に属性を与え、意味処理として、属性の値の定義を行う。入力データと出力データの間に中間的なデータを導入する方法と、導入しない方法の二つを示した。 3.上記2.では、途中、属性文法に基づいたプログラムが導出されるが、その簡潔な表記法を提案した。この表記法は、文法規則、文脈条件、意味関数が分離されているため、理解し易い。また、種々の略記法も用意されている。 4.属性文法記述をDCGに変換するトランスレータを試作した。属性から属性の値のコピーまたは定数の代入の場合、同じ引数名を使用したり、引数に直接評価式を書くことにより、評価式の省略が行える。また、文脈条件は直前にカット演算子を付けて挿入するなど、DCGにおける効率化を図っている。
|