[[[ Grammar checker for VOGUE ( UNIX / MS-DOS ) ]]] 1. はじめに 近成人氏は1992年にPC-E500用の構造化言語"VOGUE"を作られました。このコン パイラの構文を解析するパーサをyaccで作ってみたところ、いちおう動くものが できました。変数や関数のチェックも付け加えてあります。 2. 使用法 まず、makeしてください。 実行は、 vogue ソースファイル名 ~~~~~~~~~~~~~~~~~~~~~~~~~ と入力します。 例として、次のようなバグの入ったVOGUEソースリストをcheckします。 -------- test.vog ここから -------- int a,b; func char test(int i): { printf("%d^M^J",a); } /* main */ { printf("%d^M^J",i); } -------- test.vog ここまで -------- % vogue test.vog <<<< Grammar checker for VOGUE (c)1993 E.Kako >>>> Error test.vog 5 : Local variable never used. (i) Error test.vog 8 : Undefined variable. (i) Error test.vog 10 : Global variable never used. (b) Error test.vog 10 : Function never used. (test) 4 Errors detected. 6行目で、iというローカル変数が「定義されたのに使われずじまい」 10行目で、iという変数が「未定義」 12行目(全部ソースを読んだ最後)で、bという大域変数が「使われずじまい」 12行目(全部ソースを読んだ最後)で、testという関数が「使われずじまい」 というように4つのエラーを見つけ出すことができます。 3. バージョン履歴 version 1.0 93/01/18 初版 version 1.1 93/01/30 movez関数がmove2になっていたのを修正 version 1.2 93/03/04 1) VOGUE Version 1.01 での拡張に対応 2) '_'で始まるidentifierが通らなかったのを修正 3) syntax errorの時に、誤りの近くのidentifierを 表示するようにした。 これを拡張して、heap領域に構文木を作成してそれをトレースして3つ組とか を出力するようにすれば、クロスコンパイラになるでしょう。私の場合、実装 に関して技術が不足していますので無理かもしれません。 4. 配布や転載について このプログラムはフリーソフトウェアです。著作権は加古英児が保持します。 いちおう、作者は、このソフトウェアにバグを出さないように努めましたが、 このソフトウェアを利用することで損害が発生しても、作者は免責とします。 配布や転載は、改変せずに、営利を目的とせずに、その他の作者の持つ著作上 の権利を侵害しないようにして、あとは自由に配布や転載して下さい。