人間に理解できるソースコードをコンピューターが解釈できる形式に変換するソフトウェア「コンパイラ」。とても複雑なプログラムのように思えますが、コンパイラのエッセンスは小規模なプログラムでも学ぶことができるのかもしれません。
本日紹介する「The Super Tiny Compiler」はJavaScriptで記述されたコンパイラです。名前の通りとてもコンパクトにまとまっていてコメントを除外するとわずか200行のソースコードから構成されています。
The Super Tiny Compilerに関する説明は、全てソースコードの中にコメントとして記述されています。Parsing、Transformation、Code Generationというコンパイラの各ステージの動作が丁寧に解説されています。
実際にどのようにするかは、プロジェクトに同梱されているtest.jsを確認するとわかりやすいでしょう。コンパイルの各段階でどのような変化が起こっているのかテストコードの形式で確認することができます。
作者は大多数の開発者は日々の仕事でコンパイラを気にしていないが、コンパイラは身の回りにあふれていて多くのツールはコンパイラのコンセプトを取り入れている、だからコンパイラの作成を知ることで何かしら得るものがあるだろう、とコンパイラを理解するメリットを説いています
Hacker Newsでも大きな話題となっています。ワンランク上の開発者を目指しているならば解読にチャレンジしてみると面白いかもしれません。