
構文解析器を手で書き、動かし、なぜ動くのかを考え、理解しよう!
本書は、理論から応用に降りてくるという順序ではなく、まず小さな構文解析器を手で書き、動かし、なぜ動くのかを考え、そのあとで理論に戻ります。実際に手を動かすことで初めて構文解析のしくみが理解できます。
言語処理系を扱う書籍の一部として構文解析が取り上げられることは珍しくありません。しかし、その扱いはあくまで「おまけ」であって、言語を作る上での通過点としてしか位置づけられていません。これについては、言語の本質は構文解析の「後」にあるのであり、構文は本質ではないというのが大きいでしょう。筆者もこの点に異論はありません。ただ、構文(正確には具象構文)はほんとうに「おまけ」なのでしょうか。ときどき疑問に思います。
プログラミング言語に携わる研究者の間では、プログラミング言語の「意味」は抽象構文木に対して定められるものであり、構文は「ガワ」に過ぎないという考え方の人が多いように思いますし、その考えも間違ってはいないと思います。
しかし、現実に我々が読み書きするのはプログラムの抽象構文木ではなく、プログラムの文字列です。構文はUIであると言えます。多くのアプリケーションにおいてUIが果たす役割は非常に大きく、UI自体が専門分野として存在しているくらいです。そのUIたる構文とUIを適切な内部構造に変換する構文解析は軽視されていいのだろうか。筆者が構文解析の本を書こうと思い立ったのはそんな「こだわり」からでした。
本書の読者の皆さんには、構文解析の世界を少しでも楽しんでいただければと思います。構文解析は非常に奥深いテーマであり、その奥深さを一冊の本で完全に網羅することはできません。しかし、本書を通じて構文解析の基礎を学び、その面白さを感じていただければと思います。
著者プロフィール
株式会社ネクストビート所属。筑波大学に在学中からプログラミング言語や構文解析に興味を持ち、大学院ではParsing Expression Grammarの研究を行い、博士(工学)を取得。修了後はアカデミアと接点を持ちつつも、Web開発を中心とした会社で開発や教育業務に携わる。情報処理学会プログラミング研究会において編集委員を務める。無類のプログラミング言語マニアでトイ言語を含めると1ダース以上のプログラミング言語を作った経験がある。
関わった書籍として、共著の『実践Scala入門』(技術評論社)、監訳に『Scala スケーラブルプログラミング 第4版』(インプレス)など。X/GitHubでは@kmizuのIDで活動。
発行:ZEN大学出版会
発売:KADOKAWA
