RustでCASL2シミュレーター

少しシステムぽいものを作りたくなって、RustでCASL2シュミレータにチャレンジ。空いた時間にコツコツ作ってたら1ヶ月かかった。規模は2.4KS(exeファイルは1.3MB)。構成は以下のような感じ。

  • lexer(字句解析)
  • プリプロセッサ(マクロの処理)
  • parser(構文解析、エラーチェック)
  • assembler(バイナリコードへ変換)
  • comet(バイナリコードの実行)

基本的に、行単位に処理すれば良いから、他の言語処理系に比べればメチャメチャ楽。と思ったけど、さすがはRust。そう簡単には行かない。特に文字列の扱いで悩むこと多かった。加えてデータ構造をどうするかで悩む。やはり最後はデータ構造をどうするかだよね...。

とりあえずコマンドラインで動くようになってきたから、しばらくCASL2プログラムを実行しまくってバグだし。安定したら次の展開を考える。