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つの文字列で,その中に
- 文字 's' があれば記号表をブロックごとに印字します.
Ruby 1.8 と Ruby 1.9 では文字列や文字の扱いが基本的に違いますが,このプログラムはそのどちらの版でも
動くように書かれています.
PL/0'コンパイラの Ruby 版のソースリスト