www.adventar.org

コンパイラ―原理・技法・ツール (Information & Computing)

コンパイラ―原理・技法・ツール (Information & Computing)

言わずと知れた名著大賞

今年の初めD言語の.NETバインディング作るぞーとなっていた時期があり,まずは簡単に言語自作してからだろうと読んでた.これは完全に気のせいで,ドラゴンブック読んでたの去年の10月だった.まあ気にしないことにしよう.

その時の成果物がこれ
github.com

F#+FParsecでパースして後はC#で意味解析+コード生成..NETはリフレクションが標準ライブラリでカバーされていてバイナリ生成からマシン語の出力まで簡単にできる.で,文とか関数宣言とか変数宣言とかはできるようにして,main関数で1+1とか計算して関数の戻り値がexeのステータスコードになってるぞやったーという所までは到達したんだけど,Hello Worldのために文字列を導入しようとしたら,型の扱い方が良くわかんなくなって無になった.

具体的に読んだ場所は構文解析からコード生成の辺りだったと思う.後半の最適化とかの所は全然読んでない.ドラゴンブックは文脈自由文法でパースしてレジスタマシンのコード生成をする流れなので,PEG*1+スタックマシン*2でやったC±には直接活かせない部分も多かった.基本ブロックを用いた意味解析の所とかは参考になったかな.やっぱりスタックマシンはサイコーだよ,AST舐めてその順に命令発行して終わり!だからね.

評価:✅✅✅
目的には合わなかったけれども勉強にはなった.虎本とか他のコンパイラ本も読んでみたいね.

http://amzn.asia/bWZ8TBe
このURLに意味はあるのでしょうか.決めるのはあなたです.

*1:Parsing Expression Grammar

*2:.NETなので