コンパイラのスクラッチ実装
Rust と低レイヤー技術を同時に学ぶことを目標として、コンパイラをゼロから Rust で実装しました。 https://github.com/swen128/compiler-course 一般公開されていた大学の講義ノートを基にして、LISP 系の動的型付け言語である Racket のコンパイラを実装しました。 https://www.cs.umd.edu/class/fall2023/cmsc430/Notes.html このコンパイラは x86-64 をターゲットとしていて、以下のような機能を持っています。 ・int, bool, char, list, box, vector, symbol のデータ型を扱う ・変数定義 ・関数定義 ・ラムダ式、再帰関数、末尾再帰最適化 ・パターンマッチング その後、上記の講義では触れられなかったトピックに興味が湧き、書籍 "Modern Compiler Implementation in ML" を読みながらもう一つのコンパイラの実装を進めました。 https://github.com/swen128/compiler-book 静的型チェックや中間表現、レジスタ割り当てを初めとして、より発展的な内容を数多く学ぶことができました。 また、エラーハンドリングに拘って panic を出さない方針で実装したことが影響し、普段の開発でもより堅牢なコードを書く意識が強まりました。