kahei/parser_book

アスキードワンゴで出版予定の構文解析本に関するリポジトリ

TeX

126

232 commits

updated Sep 1, 2026

See the code

README

構文解析のしくみ

── 電卓から言語処理系まで自分で書く

ZEN大学出版会で出版予定の構文解析の技術書です。LuaLaTeX形式で執筆・組版します。

リポジトリの構成

./
  README.md         // このファイル
  build_pdf.sh      // PDF生成スクリプト
  tex/              // LuaLaTeX原稿
    main.tex        // 組版用メインファイル
    preamble.tex    // パッケージ・フォント・紙面設定
    references.bib  // 参考文献データ
    contents/       // 個別章のTeXファイル
      chapter1.tex  // 第1章:構文解析の世界へようこそ
      chapter2.tex  // 第2章:構文解析の基礎
      chapter3.tex  // 第3章:JSONの構文解析
      chapter4.tex  // 第4章:文脈自由文法の世界
      chapter5.tex  // 第5章:構文解析アルゴリズム・処理系統
      chapter6.tex  // 第6章:構文解析器生成系の世界
      chapter7.tex  // 第7章:現実の構文解析
      chapter8.tex  // 第8章:おわりに
  docker/luatex/    // Dockerビルド環境
  build/            // ビルド出力ディレクトリ
  code/             // サンプルコード(ディレクトリ名は出版版の章番号に対応)
    ch02/           // 第2章:JSON パーサー実装
    ch04/           // 第4章:LL(1)/LR(0)/SLR(1) パーサー実装
    ch05/           // 第5章:パーサージェネレータの例
  .gitignore        // gitの管理対象から除外するパターン

必要な環境

  • LuaLaTeX (TeX Live 2022以上推奨)
  • BibTeX
  • upmendex (日本語索引用)
  • 日本語フォント (Noto CJK フォント推奨)

Dockerを使う場合、ローカルにTeX Liveや日本語フォントを直接インストールする必要はありません。

Ubuntu/Debianでのインストール

こちらを参考に、以下のコマンドで必要なパッケージをインストールできます。

sudo apt update

# TeX Live (LuaLaTeX含む)
sudo apt install -y texlive-lang-japanese
sudo apt install -y texlive-luatex
sudo apt install -y texlive-pictures texlive-latex-extra

# 日本語フォント
sudo apt install -y fonts-noto-cjk

# rsvg-convert  # SVG画像の変換に必要
sudo apt install -y librsvg2-dev

macOSでのインストール

# Homebrew使用
brew install --cask mactex

# 日本語フォント
brew install --cask font-noto-sans-cjk-jp

書籍のビルド方法

PDFビルド

./build_pdf.sh
# build/parser_book.pdf が生成されます

Dockerビルド

./build_pdf.sh docker
# Docker内のLuaLaTeXで build/parser_book.pdf が生成されます

出版用TeXのローカルプレビュー

publish/*.tex のsemantic / structural QA用PDFは、次のコマンドで生成できます。

./build_publish_preview.sh docker
# build/publish-preview/parser_book-preview.pdf が生成されます

このPDFはNoto CJKと最小互換classを使うpreviewであり、本番組版の完全再現では ありません。使い方、source保護の仕組み、本番との差異は tools/publish_preview/README.mdを参照してください。

執筆ワークフロー

# 章を編集(tex/contents/*.tex)
vim tex/contents/chapter1.tex

# PDFを生成
./build_pdf.sh

索引

索引はLaTeX標準の makeidxbuild/parser_book.idx を出力し、 upmendex で日本語対応の build/parser_book.ind に変換します。 ./build_pdf.sh はこの手順を自動で実行します。

本文に索引用語を追加する場合は、該当箇所の近くに以下のように書きます。

\index{こうぶんかいせき@構文解析}
\index{PEG}
\index{ぱーさーこんびねーた@パーサーコンビネータ}

日本語の用語は 読み@表示名 の形にすると、索引の並びが安定します。

Contributors

kmizu

221 commits

kahei

4 commits

m-tmatma

1 commits

kahei/parser_book

アスキードワンゴで出版予定の構文解析本に関するリポジトリ

TeX

126

232 commits

updated Sep 1, 2026

See the code

README

構文解析のしくみ

── 電卓から言語処理系まで自分で書く

ZEN大学出版会で出版予定の構文解析の技術書です。LuaLaTeX形式で執筆・組版します。

リポジトリの構成

./
  README.md         // このファイル
  build_pdf.sh      // PDF生成スクリプト
  tex/              // LuaLaTeX原稿
    main.tex        // 組版用メインファイル
    preamble.tex    // パッケージ・フォント・紙面設定
    references.bib  // 参考文献データ
    contents/       // 個別章のTeXファイル
      chapter1.tex  // 第1章:構文解析の世界へようこそ
      chapter2.tex  // 第2章:構文解析の基礎
      chapter3.tex  // 第3章:JSONの構文解析
      chapter4.tex  // 第4章:文脈自由文法の世界
      chapter5.tex  // 第5章:構文解析アルゴリズム・処理系統
      chapter6.tex  // 第6章:構文解析器生成系の世界
      chapter7.tex  // 第7章:現実の構文解析
      chapter8.tex  // 第8章:おわりに
  docker/luatex/    // Dockerビルド環境
  build/            // ビルド出力ディレクトリ
  code/             // サンプルコード(ディレクトリ名は出版版の章番号に対応)
    ch02/           // 第2章:JSON パーサー実装
    ch04/           // 第4章:LL(1)/LR(0)/SLR(1) パーサー実装
    ch05/           // 第5章:パーサージェネレータの例
  .gitignore        // gitの管理対象から除外するパターン

必要な環境

  • LuaLaTeX (TeX Live 2022以上推奨)
  • BibTeX
  • upmendex (日本語索引用)
  • 日本語フォント (Noto CJK フォント推奨)

Dockerを使う場合、ローカルにTeX Liveや日本語フォントを直接インストールする必要はありません。

Ubuntu/Debianでのインストール

こちらを参考に、以下のコマンドで必要なパッケージをインストールできます。

sudo apt update

# TeX Live (LuaLaTeX含む)
sudo apt install -y texlive-lang-japanese
sudo apt install -y texlive-luatex
sudo apt install -y texlive-pictures texlive-latex-extra

# 日本語フォント
sudo apt install -y fonts-noto-cjk

# rsvg-convert  # SVG画像の変換に必要
sudo apt install -y librsvg2-dev

macOSでのインストール

# Homebrew使用
brew install --cask mactex

# 日本語フォント
brew install --cask font-noto-sans-cjk-jp

書籍のビルド方法

PDFビルド

./build_pdf.sh
# build/parser_book.pdf が生成されます

Dockerビルド

./build_pdf.sh docker
# Docker内のLuaLaTeXで build/parser_book.pdf が生成されます

出版用TeXのローカルプレビュー

publish/*.tex のsemantic / structural QA用PDFは、次のコマンドで生成できます。

./build_publish_preview.sh docker
# build/publish-preview/parser_book-preview.pdf が生成されます

このPDFはNoto CJKと最小互換classを使うpreviewであり、本番組版の完全再現では ありません。使い方、source保護の仕組み、本番との差異は tools/publish_preview/README.mdを参照してください。

執筆ワークフロー

# 章を編集(tex/contents/*.tex)
vim tex/contents/chapter1.tex

# PDFを生成
./build_pdf.sh

索引

索引はLaTeX標準の makeidxbuild/parser_book.idx を出力し、 upmendex で日本語対応の build/parser_book.ind に変換します。 ./build_pdf.sh はこの手順を自動で実行します。

本文に索引用語を追加する場合は、該当箇所の近くに以下のように書きます。

\index{こうぶんかいせき@構文解析}
\index{PEG}
\index{ぱーさーこんびねーた@パーサーコンビネータ}

日本語の用語は 読み@表示名 の形にすると、索引の並びが安定します。

Contributors

kmizu

221 commits

kahei

4 commits

m-tmatma

1 commits

Languages

TeX

68.6%

Java

22.5%

Python

6.7%

Shell

1.5%