seraphyの日記

日記というよりは過去を振り返るときのための単なる備忘録

ドラゴンブックを紆余曲折でようやく購入。

…長かった。ここまで到達するのに。
コンパイラ―原理・技法・ツール〈1〉 (Information & Computing)コンパイラ―原理・技法・ツール〈2〉 (Information & Computing)
コンパイラ―原理・技法・ツール〈1〉 (Information & Computing)コンパイラ―原理・技法・ツール〈2〉 (Information & Computing)
JAVACCから始まった構文解析の学習と平行して、正規表現の独自実装方法を調べ始めて、計算機理論の基礎、オートマトン関連本、そしてステートマシンをC/C++で実装するテクニック本を経て、結局、いきついたのは定番の「ドラゴンブック」でした。
しかし、この紆余曲折は無駄ではなかったと思う。
CSVの解析*1、とかJSPの<% 〓 %>切り出しとか、${名前}のような変数展開を独自実装する場合、これらをステートマシンで表現すると、非常に効率的且つ素直で明快なロジックで書けることにいまさらながら気づいた。
本格的なパーザを組まなくても十分に役立つ。

*1:CSVの解析は結構単純ではない。たとえばEXCELCSVにはカラムデータとして改行等も含められるので単純にトーカナイザでカンマで区切ればいい、ってもんじゃない。そもそも行という単位で切り出すことも不可能