まえがき 日本語訳にあたって Bisonの利用条件 GNU GENERAL PUBLIC LICENSE Preamble How to Apply These Terms to Your New Programs 1. Bisonの概念 1.1 言語と文脈自由文法 1.2 形式規則からBisonの入力へ 1.3 意味値 1.4 意味アクション 1.5 Bisonの出力――構文解析器ファイル 1.6 Bisonを使う手順 1.7 Bison文法の全体像 2. 例 2.1 逆ポーランド記法電卓 2.1.1 rpcalcのための宣言 2.1.2 rpcalcのための文法規則 2.1.2.1 inputの説明 2.1.2.2 lineの説明 2.1.2.3 exprの説明 2.1.3 rpcalc字句解析器 2.1.4 制御関数 2.1.5 エラー報告関数 2.1.6 構文解析器を生成するためにBisonを実行 2.1.7 構文解析器ファイルのコンパイル 2.2 中間記法電卓:calc 2.3 単純なエラー回復 2.4 多機能電卓:mfcalc 2.4.1 mfcalcのための定義 2.4.2 mfcalcのための文法規則 2.4.3 mfcalcの記号表 2.5 練習問題 3. Bison文法ファイル 3.1 Bison文法の概要 3.1.1 C宣言部 3.1.2 Bison宣言部 3.1.3 文法規則部 3.1.4 追加のCプログラム部 3.2 記号、終端と非終端 3.3 文法規則の構文 3.4 再帰的規則 3.5 言語の意味の定義 3.5.1 データ型と意味値 3.5.2 複数の値型 3.5.3 アクション 3.5.4 アクション中の値のデータ型 3.5.5 規則の途中のアクション 3.6 Bison宣言 3.6.1 トークン型名 3.6.2 演算子の優先順位 3.6.3 値型の集合 3.6.4 非終端記号 3.6.5 衝突警告の回避 3.6.6 開始記号 3.6.7 純粋(再入可能)構文解析器 3.6.8 Bison宣言の要約 3.7 同一プログラム中の複数の構文解析器 4. 構文解析器のC言語インターフェイス 4.1 構文解析器関数yyparse 4.2 字句解析器関数yylex 4.2.1 yylexを呼び出す方法 4.2.2 トークンの意味値 4.2.3 トークンのテキスト中の位置 4.2.4 再入可能構文解析器を呼び出す方法 4.3 エラー報告関数yyerror 4.4 アクション中で使える特別な機能 5. Bison構文解析器のアルゴリズム 5.1 先読みトークン 5.2 シフト還元衝突 5.3 演算子の優先順位 5.3.1 優先順位が必要な場合 5.3.2 演算子の優先順位の指定 5.3.3 優先順位の例 5.3.4 優先順位が働く仕組み 5.4 文脈依存優先順位 5.5 構文解析器の状態 5.6 還元/還元衝突 5.7 不可解な還元/還元衝突 5.8 スタックオーバーフローと防ぎ方 6. エラーからの回復 7. 文脈依存性の処理 7.1 トークン型の意味情報 7.2 字句解析結び付き 7.3 字句解析結び付きとエラー回復 8. 構文解析器のデバッグ 9. Bisonの実行 9.1 Bisonのオプション 9.2 オプション対応表 9.3 VMS上での実行 A. Bisonの記号一覧 B. 用語集 索引
日本語訳にあたって
Preamble How to Apply These Terms to Your New Programs
1.1 言語と文脈自由文法 1.2 形式規則からBisonの入力へ 1.3 意味値 1.4 意味アクション 1.5 Bisonの出力――構文解析器ファイル 1.6 Bisonを使う手順 1.7 Bison文法の全体像
2.1 逆ポーランド記法電卓 2.1.1 rpcalcのための宣言 2.1.2 rpcalcのための文法規則 2.1.2.1 inputの説明 2.1.2.2 lineの説明 2.1.2.3 exprの説明 2.1.3 rpcalc字句解析器 2.1.4 制御関数 2.1.5 エラー報告関数 2.1.6 構文解析器を生成するためにBisonを実行 2.1.7 構文解析器ファイルのコンパイル 2.2 中間記法電卓:calc 2.3 単純なエラー回復 2.4 多機能電卓:mfcalc 2.4.1 mfcalcのための定義 2.4.2 mfcalcのための文法規則 2.4.3 mfcalcの記号表 2.5 練習問題
2.1.1 rpcalcのための宣言 2.1.2 rpcalcのための文法規則 2.1.2.1 inputの説明 2.1.2.2 lineの説明 2.1.2.3 exprの説明 2.1.3 rpcalc字句解析器 2.1.4 制御関数 2.1.5 エラー報告関数 2.1.6 構文解析器を生成するためにBisonを実行 2.1.7 構文解析器ファイルのコンパイル
rpcalc
2.1.2.1 inputの説明 2.1.2.2 lineの説明 2.1.2.3 exprの説明
input
line
expr
calc
mfcalc
2.4.1 mfcalcのための定義 2.4.2 mfcalcのための文法規則 2.4.3 mfcalcの記号表
3.1 Bison文法の概要 3.1.1 C宣言部 3.1.2 Bison宣言部 3.1.3 文法規則部 3.1.4 追加のCプログラム部 3.2 記号、終端と非終端 3.3 文法規則の構文 3.4 再帰的規則 3.5 言語の意味の定義 3.5.1 データ型と意味値 3.5.2 複数の値型 3.5.3 アクション 3.5.4 アクション中の値のデータ型 3.5.5 規則の途中のアクション 3.6 Bison宣言 3.6.1 トークン型名 3.6.2 演算子の優先順位 3.6.3 値型の集合 3.6.4 非終端記号 3.6.5 衝突警告の回避 3.6.6 開始記号 3.6.7 純粋(再入可能)構文解析器 3.6.8 Bison宣言の要約 3.7 同一プログラム中の複数の構文解析器
3.1.1 C宣言部 3.1.2 Bison宣言部 3.1.3 文法規則部 3.1.4 追加のCプログラム部
3.5.1 データ型と意味値 3.5.2 複数の値型 3.5.3 アクション 3.5.4 アクション中の値のデータ型 3.5.5 規則の途中のアクション
3.6.1 トークン型名 3.6.2 演算子の優先順位 3.6.3 値型の集合 3.6.4 非終端記号 3.6.5 衝突警告の回避 3.6.6 開始記号 3.6.7 純粋(再入可能)構文解析器 3.6.8 Bison宣言の要約
4.1 構文解析器関数yyparse 4.2 字句解析器関数yylex 4.2.1 yylexを呼び出す方法 4.2.2 トークンの意味値 4.2.3 トークンのテキスト中の位置 4.2.4 再入可能構文解析器を呼び出す方法 4.3 エラー報告関数yyerror 4.4 アクション中で使える特別な機能
yyparse
yylex
4.2.1 yylexを呼び出す方法 4.2.2 トークンの意味値 4.2.3 トークンのテキスト中の位置 4.2.4 再入可能構文解析器を呼び出す方法
yyerror
5.1 先読みトークン 5.2 シフト還元衝突 5.3 演算子の優先順位 5.3.1 優先順位が必要な場合 5.3.2 演算子の優先順位の指定 5.3.3 優先順位の例 5.3.4 優先順位が働く仕組み 5.4 文脈依存優先順位 5.5 構文解析器の状態 5.6 還元/還元衝突 5.7 不可解な還元/還元衝突 5.8 スタックオーバーフローと防ぎ方
5.3.1 優先順位が必要な場合 5.3.2 演算子の優先順位の指定 5.3.3 優先順位の例 5.3.4 優先順位が働く仕組み
7.1 トークン型の意味情報 7.2 字句解析結び付き 7.3 字句解析結び付きとエラー回復
9.1 Bisonのオプション 9.2 オプション対応表 9.3 VMS上での実行