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


PL/0'コンパイラは C や Java で書かれていましたが,それを Ruby で書き直したものを作りました.(2010.9.22)
C版の getSource.c と compile.c を書き直したものが getSource.rb と compiler.rb でJava版の Table.java を書き直したものが table.rb です.
ただし,Ruby では Java の場合と同じように機械語の命令列のバイナリパターンを生成するのが簡単ではありませんから,生成するコードはアセンブリコードとしました.アセンブラとインタプリタは作ってありません.したがって,codeGen.rb は短いプログラムです.
使い方は

   $ ruby pl0.rb オプション指定 ソースファイル名

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

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

Ruby 1.8 と Ruby 1.9 では文字列や文字の扱いが基本的に違いますが,このプログラムはそのどちらの版でも 動くように書かれています.

PL/0'コンパイラの Ruby 版のソースリスト