コンパイラ自作
久しぶりに記事を書きます。このところ数学とか電気回路の勉強ばかりで、仕事以外でコードを書いていないので気分転換にコードを書きたい欲が強くなっていたのですが、@rui314さんがCコンパイラ作成入門という面白そうな本を書かれているそうなので自分もC言…
lang-impl.connpass.com参加させて頂きました。 目次 目次 良かった点 苦労した点 構文解析について思ったこと Rubyで式の構文解析をしてみた 書いてみて気づいたこと 再帰か状態遷移か 今後やってみたいこと パーサジェネレータを書く 関数型言語でパーサを…
llvmをビルドしようとしてリンクエラーでこけました。 VMWare上のLinux Mint上でビルドしているのですが、ググってみるとどうもシステムのメモリ容量が小さいから起きているようでした。 ※だいぶ前にLLVMをビルドしようとしたときにもはまったきがするので備…
なんだかすごく今更ですが、気分的になんとなく実装してみました。 仕様把握 そもそもbrainfuckの仕様がよく把握できていないのでwikipedia等いくつかのサイトを参考にさせて頂きました。Brainfuck - Wikipedia Brainf*ckHello Worldなどいくつかサンプルコ…
冬休みということで少し時間があるのでいろいろ勉強しているのですが、なんとなくLisp処理系を書いてみたくなったのでRubyで実装してみたいと思います。Lisp処理系の実装というとshemeの仕様を理解して実装するのが一般的らしいのですが、冬休みで時間も限ら…
タイトルの通り、C言語系の複数行 /* ~ */ コメントを除去するコードを書いてみました。 Rubyで書いていますが状態遷移が基本になるのでどの言語でも同じように書けそうです。 # コメントアウトの除去 def delete_comment_out code status = :STATUS_WAIT_S…
2019-11-02追記 yoctoのサンプルプロジェクトようにこの記事のコードを使って試していたらいくつかバグがありましたので修正しました。 具体的には本記事のコードでマイナスがうまく扱えていませんでした。 例えば、 ./calc "3 - 3 + 3" のような計算がうま…
7月2日に東京で開催されたシステムプログラミング会(SP会)に参加させて頂きました。畏れ多くも参加させて頂きました。■目次 参加動機 敷居の高さ 内容 感想 感謝 余談 1.printfの挙動について 2.家路につくまで かなりヤバい人たちの集まりだとは理解し…