並行論理型言語のプログラミングとプログラムの効率的実行にとって、モード解 析をはじめとする各種の静的解析技法は非常に基本的な情報を提供する。モード 解析とは、データの流れや通信プロトコルに関する性質を静的に解析するもので あり、その効率的なアルゴリズムがklint第1版として実装された[3]。
さらに、プログラムの静的デバッグおよび処理系最適化のためには、データ型や データ参照数(あるデータの読み手が単数か複数かに関する情報)を解析すること も重要である。1997年度成果ソフトウェアのklint第2版では、モード解析に加え、 データ型とデータ参照数を、類似の技法で効率良く行なう技法を実装した。抽象 解釈に基づくプログラム解析の研究は多いが、我々の静的解析の特徴は、 単一化による制約充足アルゴリズムに基づいており、単純でしかも大規模プログ ラムへの適用が容易な点である。
これらの解析情報は、並行論理プログラムの実行時の性質に関する、実装方式に 依存しない性質である。処理系最適化のためには、間接参照ポインタの段数をは じめとする実装方式依存の解析情報を抽象解釈によって得ることも有用であるが、 このような抽象解釈も、モード体系や型体系の存在を前提として、実装方式非依 存の解析情報を得てから行なうことによって、見通しを格段に良くすることがで きる。
モード、型、参照数に関する情報は、(a)プログラムの静的デバッグ、(b)プログ ラミングスタイルのチェック、(c)処理系最適化、(d)詳細なプログラム解析のた めの基礎情報の提供、(e)動的デバッグのための基礎情報の提供、などさまざま な応用がある。本年度の研究開発では、これらの3種類の情報を提供するklint第2 版解析系の改良を行なった。