PL/0'コンパイラのJava版


PL/0'コンパイラはCで書かれていましたが,それをJavaで書き直したものです.
C版の5つのプログラムファイルをそのままJava版の5つのファイルに書き直したものです.
ただし,codegen.cについてはCodeGen.javaとCodeGenB.javaの2つを作りました.
それらのコンパイル結果はパッケージpl0に入ります.使い方は

   $ java pl0/PL0 オプション指定 ソースファイル名

です.コンパイル結果のソースプログラムの情報(トークンの種類や,エラーの表示など) は「ソースファイル名.html」というファイルに出力されます.

オプション指定は'-'で始まる1つの文字列で,その中に

Javaでは,目的コードの命令語をクラスのオブジェクトとして表現すると,目的コードの配列は各命令語の参照(ポインタ)の列となります.それがCodeGen.javaで作られる目的コードです.
それに対して,目的コードの配列をバイト(Javaのbyte型)の配列として,各命令語を1~5バイトで表現するようにしたのがCodeGenB.javaです.オプションで'b'を指定すると,後者が使われます.


トレースでは,簡単のために,スタックのトップと実行する命令を交互に印字します. ただし,演算のスタックに何も積まれていないときに,スタックのトップにあるように見えるのは,スタックに割当てられた最後の局所変数です.


ソースリスト


サンプルプログラム


戻る