こないだ作ったesotericがあろうことか0.0.2にバージョンアップしました。主な変更点は以下の通り。
- 各言語をコンパイルしてできる中間コードが、前のバージョンでは似非アセンブラ的な何かだったものを、ParseTreeなんかで作るようなRubyの抽象構文木(AST)的な何かに変わった。VMでの実行前に生成されたコードを最適化するとかできるようになるとか、他のRubyライブラリにEsoteric Languageパーサが埋め込めるようになるとか、無駄に夢が広がる感じで。
- もちろん似非VMでは動かなくなったので、作り直さなきゃいけないんだけど、ちょっと時間かかりそうなので似非VM殺した。そのかわり、ASTはRuby2RubyとかでRubyコードに変換できるように作ってあるので、とりあえずRuby2Rubyを使うようにして誤魔化すことにした。
- 副産物としてDTやWhitespaceのコードを実行可能なRubyスクリプトに変換するコンパイラもどきのツールが出来た。Cへのトランスレータもあるみたいだし、そういうの使えば本当にコンパイルしてバイナリも作れたりしますね。DTでコマンドとか作れるようになるね。まったくやりたくないけどね。
- Brainf*ckのパーサを追加
- てってってーのパーサを追加。一応一通りの仕様は満たしてると思うけど、「「\xAB」「\uABCD」「\d00000」:エスケープシーケンスとして、それ全体で1文字と扱われる。(予定)」ってのはまだ実装してない。あと「ててー」と「てっー」が微妙な動きをするのを解決してないけど、まぁそのうちなんとかする。
とまぁ、そんな感じ。次はまず、VMの再実装と、あとSpec書く。それ終わったらRubyで作る奇妙なプログラミング言語 ~Esoteric Language~に載ってたStarryやBolicでも実装しようかな。あとは草とかやってみようかしら。
大分楽しくなってきたところだけどアイマスSP買ってきてしまったので、一回休み。そしたら来月ぐらいから仕事が忙しくなるに違いないのでまた一回休み。一段落ついたら多分飽きてるだろうからまた(ry。まぁまったりもったりやりますかねぇ。