コンパイラつくろー - 2
コンパイラつくろー - エンジニアですよ!で書いたように、コンパイラを作っている。
まぁまだ難しいのでコンパイラというか単に数式をパースして計算するというのを作っている。。
アセンブリコードを出力しようとして色々試していたら、パーサー部分がまだバグっていることがわかった。
トークンに分けることはできているんだけど、優先順位とかを考慮して構文木を作るところがバグっていた。
ここがどうしてもうまくいかなかったんだが、素直にBNFから左再帰を消して再帰下降構文解析的な感じで書き下したらいけた。
↓この本を読みながら勉強していた。たまたま手に入ったというだけで特に選んだわけではないが、僕みたいにコンピュータサイエンスのバックグラウンドのない人が独学で基礎をざっと学ぶにはとても良い本なんじゃないかと思う
初めてまともにオートマトンとかを勉強して、プッシュダウン・オートマトンで解析できると思ってプッシュダウン・オートマトンを実装して解析できるようになったんだが、木構造を作る時にどうしても難しかったのでナイーブなオートマトンの実装はやめておいた。
次はアセンブリの出力はなんとなくできているので、次はアセンブルとリンクをしないといけないのかな。
いまいちオブジェクトってのがわかっていないのでその辺を理解するのが次の課題だろうか