研究概要 |
本研究では、プログラム言語とその変換系(たとえばコンパイラ)の形式的仕様が与えられたとき,記述した形式的仕様自身が正しく記述されていることをテストし,誤り検出を行う手法を開発した. 仕様記述の方法には種々ものがあるが,本研究では,プログラム言語の意味(静的意味),実行(動的意味,インタプリテーション),変換(例えば最適化や目的コードの生成)がいずれも記述できる属性文法を採用する. さて,記述した形式的仕様のテストおよび誤り検出のためには,実用的な観点から次の2つのツールが必要である:(a)仕様をテストする際,あるソースプログラムに対して仕様が意味,実行,変換の点で誤っていることが分かったときに,仕様のデバッグを支援するツール,(b)仕様をテストできるようなソースプログラムの集合を,プログラム言語やその変換の形式的仕様から生成するツール.本研究では,そのうち次を実現した. 1.(a)については,従来論理型言語のデバッグに用いられていたアルゴリズミック・デバッギングの手法を属性文法に応用したバグ究明戦略を提案した.さらに,その拡張アルゴリズム,属性文法クラスとの関係を考察し,属性文法に基づく生成系Junをもとにプロトタイプ・システムを作成した.属性文法に対する系統的デバッグ法の研究は従来はほとんどなされていないので,これは独創性の高い研究であると考える[研究発表6,4など]. 2.(b)については,プログラム言語の構文および意味が与えられたとき,構文および意味の双方について正しい/誤ったソースプログラムを生成する方法を開発し,Prologを用いてプロトタイプ・システムを作成した.本研究の特徴は,属性文法の文脈条件(プログラム言語が満たすべき意味的条件)を用いて,その条件を真/偽にすることにより,意味的に正しい/誤ったテストプログラムを生成できることである[研究発表5など].
|