アスキードワンゴで出版予定。2023年中になんとか完成にこぎつけたい。
Honkit形式で執筆中。
./
book.json // Honkitの設定ファイル
package.json // npmの各種設定
package-lock.json // package.jsonのロックファイル
README.md // このファイル
honkit / // 原稿が入ったディレクトリ
SUMMARY.md // 章構成
README.md // 原稿のREADME
preface.md // はじめに
chapter1.md // 第一章
chapter2.md // 第二章
chapter3.md // 第三章
chapter4.md // 第四章
chapter5.md // 第五章
chapter6.md // 第六章
chapter7.md // 第七章
appendix.md // 付録
.gitignore // gitの管理対象から除外するパターンの列挙
npm i
依存ライブラリをインストールする
$ npm i
npm run start
Honkitによって、書籍をビルドし、プレビューができる状態にする
npm start // Honkitによるプレビュー
...
Starting server ...
Serving book on http://localhost:4000
これまで、プログラミング言語処理系(インタプリタやコンパイラ)を作ることについてはさまざまな本が出版されてきた。とくに有名なものは
- 通称ドラゴンブック(邦題:コンパイラ―原理・技法・ツール)
- 通称タイガーブック(邦題:最新コンパイラ構成技法)
この2冊だと言える。他にも、コンパイラで有名な中田育男先生やアカデミアで有名な専門家が書いたコンパイラの本は少なくない。
一方で、コンパイラやインタプリタの一部となるパーザ(構文解析器)については、非常に文献が少ない。上記、ドラゴンブックやタイガーブックにて、アルゴリズムについて一部触れられているものの、それ以外は言語作成の過程として多少の説明をする程度である。英語の本として、構文解析というテーマについて網羅的に触れられているのは、Parsing Techniques 2nd Editionがほぼ唯一のものであると思われる。そのParsing Techniquesにしても構文解析を専門としている人向けの解説書であって、構文解析の初学者向けの本ではない。
これは、構文解析が、1980年代以降、「解決した問題」と思われていたことが一因ではないかと思われる。しかし、Bryan Fordが発表したPackrat Parsing(2002) やその理論的基礎をなすParsing Expression Grammar(2004)、トップダウン型構文解析の新たな地平を切り開いたLL()(2010)、Adaptive LL()(2014)、GLL Parsing(2010)など、新しい構文解析アルゴリズムは近年も登場しており、構文解析は「解決した問題」とはいえない。
さらに、IDEの発展などに伴い、ユーザーフレンドリーなエラーメッセージの提示という観点から構文解析という領域は再び注目を集めているとも言える。
今ここで、再び構文解析という世界に光をあて
- 非自然言語の構文解析とはどのような作業なのか
- 構文解析にはどのようなアルゴリズムがあるのか
- 各構文解析アルゴリズムアルゴリズムの特徴と制限
- 下向き構文解析(LLファミリー)
- 上向き構文解析(主にLRファミリー)
- その他
- 新しい構文解析アルゴリズム(2000年代以降)
- LL() / Adaptive LL()
- Packrat Parsing(PEG)
といったトピックを扱う本を出版したいと考えている。本書を読むことを通じて、読者は
- 自分が行いたい作業にあった構文解析アルゴリズムを適切に選ぶことができる
- 必要に応じて、構文解析アルゴリズムを使い分けることができる
- 手書きパーザー
- パーザージェネレーター
- パーザコンビネーター
- より柔軟な文法を組み立てることができる
ようになることが期待される。
本書は、
- Parsing Techniques 2nd Edition
- コンパイラー原理・技法・ツール
で解説されている内容に加えて最新の論文でしか触れられていない内容をも平易に解説し、実践でどのように使えるかという内容も盛り込んでいるのでかなりの難産になっている。
- 4章完成まで:計3ヶ月
- それ以外の章完成まで:計3ヶ月
- レビュー(ラフ原稿段階):1か月
- レビュー(正式原稿段階):1か月
計8ヶ月くらいの期間を予定している。完成は2024年3月を目指す。レビューアーにはいったん未完成の原稿を読んでもらった方が完成までの目処が立つかもしれない。