ローファイ日記

出てくるコード片、ぼくが書いたものは断りがない場合 MIT License としています http://udzura.mit-license.org/

Crafting Interpretersの言語実装をRustで進めている話

Rustアドベントカレンダー(その1)3日目の記事です。

qiita.com

id:udzura と申します。Rustは2021年になると同時に始めたので、いまだ経験1年未満ですが、僭越ながらも今回アドベントカレンダーに参加いたします。

今回はタイトルの通り、RustでCrafting Interpretersを進めている話です。Crafting Interpretersとは、Loxと名付けられたインタプリタ言語をJavaやCで実装していき、その過程で言語実装の肝要を学ぶことができるという書籍です。Web版は無料で閲覧できます。

craftinginterpreters.com

現在II章まで終わり、実装はGitHubにアップしています。 Lox本体のソースコード部分 と同じMITライセンスにしています。

github.com

この記事では、進めた上で工夫した点、頑張った点を小学生の日記のように残していきます...。

続きを読む

RubyKaigi takeoutでRuby to BPF compilerの話をした話

Rubyアドベントカレンダー(カレンダー2)の2日目です。

qiita.com

今見たらカレンダー2も半分以上埋まってて嬉しい... Ruby is alive now!!!

ということで、RubyKaigi takeout 2021の振り返りも兼ねて作ったものの話です。

rubykaigi.org

Rucy: A Ruby Compiler

続きを読む

型付きRubyでパーサを書く(後編)

今までのあらすじとして、ここまでで、Rubyでパーサを書き、めでたくRBSで型を付けました。

udzura.hatenablog.jp

udzura.hatenablog.jp

github.com

本エントリでは簡単にふりかえってみます。

大前提として、個人の感想で、皆様の今後の型ライフにほんのちょっと参考になればいいなというのはありますが、個人の日記の話です。

また、僕が誤解している内容もたくさんあると思うのでその際はご教示願います。

ふりかえりと感想

続きを読む

型付きRubyでパーサを書く(中編)

前編はこちら。

udzura.hatenablog.jp


ここまででスキャナまでは実装し、大体動いたようです(型もちゃんとついたようです)ので、続きの実装をします。

続きを読む

型付きRubyでパーサを書く(前編)

K-Ruby という鹿児島のRubyコミュニティの忘年LT大会でRBSを使ってみた話をします。オンラインですが、九州盛り上げていきましょう!

k-ruby.connpass.com

それはそれとしてRBSというものに今回ちゃんと触れるので、触れた記録を雑にでも残していこうと思い、ブログを書きます。どれくらい後学のためになるのかならないのかわかりませんが、触ってみたライブな感想をなるべく残しておくのは意味があるでしょう、と。

@yoshikouki さんには「RailsRBSを入れる方法を教えてください!」って言われてて、俺にRailsの話を聞くのか... って思ったんですけど、 まあその辺の面白そうなトピックは @yoshikouki さんのために取っておこうと思うので、僕はもうちょっと簡単なプログラム、そう、 プログラミング言語のパーサRubyで、型付きで書こうと思いました。

最初に諸注意

このエントリはただの作業メモで、この通りに実装を進めたら動くような書き方をしていません。前半で残したコードや型が後半で細かく変わってるということがふつうにあるし、全ての修正を記録していません。

一応というか、最終的な実装は以下のリポジトリに残してあります。それを見比べながら読み解く風になるでしょう。

github.com

あくまで「型付けRubyの雰囲気」を感じ取り、皆様が実際に型をドライブしながら書き進めていく際のシャドーイングに役立てばと思います(本当に?)*1

また、「Rubyの型ってどうなの?」というところだけ知りたければ、後編をいきなり読んでもいいと思います。いずれにせよ個人の感想ですのでご留意ください。

udzura.hatenablog.jp

言語の文法

実装しようとする言語の文法です。

*1:本来なら、ライブコーディングの動画でも残すのがいいんでしょうね

続きを読む