平成7年度 委託研究ソフトウェアの 成果ソフトウェア

(4) KL1プログラム開発支援ツール

研究代表者:上田 和紀 助教授
      早稲田大学 理工学部 情報学科


klint - Mode Analyzer for KL1 Programs


[機能]

klint は、KL1 プログラムを構成する述語の引数や変数が、どのよう な通信プロトコルで使われているかを、文献[1]の方法で静的に解析す るツールである。この解析を、モード解析ともいう。モード解析によっ て、今まで実行時デバッグによって除去していた誤りの多くが、静的に 除去できるようになる(文献[3])。モード解析の入門的解説としては、 文献[2]がある。

klint は、プログラムの各述語のプロトコルを推論して、その結果をモー ドグラフの形で出力する。プログラマがモード宣言を与える必要はない。 モードづけできない場合は、プログラム中のどの記号が、最終的に誤り を引き起こしたかを報告して、その時点のモードグラフを出力する。次 の版では、モードづけできない原因を、文献[4]の方法にしたがって解 析して報告するように改良する予定である。

klint は、モード制約生成系(klint1)とモード制約充足系(klint2)を、 Unixパイプで接続した構成になっている。モード制約生成系は、プログ ラムが構文的に課するモード制約を出力するものであり、モード制約充 足系は、モード制約生成系から来る制約集合を解いて、プログラムの主 モード(principal mode)を、モードグラフの形で求めるものである。

なお、モード解析は、Prolog 処理系に見られる singleton 変数の警告 機能を含んでいる。

[用途]

あらゆるKL1プログラムの静的デバッグおよびスタイルチェック

[使用言語]

klint1 および klint2 はすべて KL1 で記述され、KLIC 処理系で コンパイルすることができる。klint のトップレベルは Unix の sh (Bourne shell) で定義してあるので、Unix環境以外では再定義する必 要がある。

[OS 等の環境]

KLIC処理系が稼働しているUnix環境。

[ファイル構成]

        klint1-main.kl1, klint2-main.kl1, 
        constraints.kl1, decode.kl1,
        findpath.kl1, graph.kl1,
        normalize.kl1, numberbuiltin.kl1,
	outmessage.kl1, read_program.kl1,
        reduce.kl1, stdinout.kl1, unify.kl1
                        以上が、klint1 および klint2 のソースプログラム
        
        klint           Bourne shell で定義したトップレベル
        advertise.txt   本ファイル
        Makefile        make ファイル
        README          概要、klint の入出力、使用例、インストール方法
                        などの情報を含む

[参考文献]

    [1] Ueda, K. and Morita, M., Moded Flat GHC and Its Message-Oriented
        Implementation Technique.  New Generation Computing, Vol.13,
        No.1 (1994), pp.3-43.

    [2] Ueda, K., I/O Mode Analysis in Concurrent Logic Programming.  In
        Theory and Practice of Parallel Programming, LNCS 907, Springer,
        1995, pp.356-368.

    [3] Ueda, K., Experiences with Strong Moding in Concurrent
        Logic/Constraint Programming.  In Proc. Int. Workshop on
        Parallel Symbolic Languages and Systems (PSLS'95), T. Ito,
        R.H. Halstead, Jr., and C. Queinnec (eds.), LNCS 1068, Springer,
        1996, pp.134-153.

    [4] Cho, K. and Ueda, K., Diagnosing Non-Well-Moded Concurrent Logic
        Programs.  To be presented at 1996 Joint International
        Conference and Symposium on Logic Programming (JICSLP'96), Bonn,
        Germany, September 1996.

[FTP]



www-admin@icot.or.jp