第1章 プログラミング言語
1.1 プログラミング言語の役割
1.2 プログラミング言語の種類と歴史
1.3 プログラミング言語処理系
第1章の章末問題
第2章 コンパイラの全体構成
2.1 コンパイラの処理の概要
2.2 フロントエンド
2.3 バックエンド
2.4 本書で例題とするプログラミング言語
第2章の章末問題
第3章 字句解析
3.1 トークン
3.2 正則表現と有限状態オートマトン
第3章の章末問題
第4章 字句解析器生成系lex
4.1 lex記述
4.2 lex記述のコンパイルと実行
第4章の章末問題
第5章 構文解析の準備
5.1 文脈自由文法
5.2 導出
5.3 構文木と曖昧性
5.4 拡大文法とEoFトークン
5.5 構文解析手法の条件
第5章の章末問題
第6章 下向き構文解析
6.1 解析例
6.2 Director集合
6.3 構文解析アルゴリズム:空規則を含まない場合
6.4 構文解析アルゴリズム:空規則を含む場合
6.5 繰り返し計算
6.6 LL(1)文法
6.7 文法変換
6.8 下向き構文解析プログラムのコンパイルと実行
第6章の章末問題
第7章 上向き構文解析
7.1 解析例
7.2 LR(0)構文解析
7.3 SLR構文解析
7.4 LR(1)構文解析
7.5 LALR(1)構文解析
第7章の章末問題
第8章 構文解析器生成系yacc
8.1 SL1の文法
8.2 yacc記述
8.3 yacc記述のコンパイルと実行
8.4 yacc記述のデバッグ
第8章の章末問題
第9章 抽象構文木の構築
9.1 構文解析以後の処理
9.2 抽象構文木の仕様
9.3 SL0のための下向き構文解析による抽象構文木の構築
9.4 SL1のための上向き構文解析による抽象構文木の構築
第9章の章末問題
第10章 中間木の構築
10.1 記号表の設計
10.2 抽象構文木を走査する関数
10.3 抽象構文木の上の意味エラーチェック
10.4 データ型の埋め込み
第10章の章末問題
第11章 インタプリタとコンパイラ
11.1 インタプリタの作成
11.2 コンパイラの作成
11.3 コード最適化
11.4 本書で触れなかった事柄
第11章の章末問題
あとがき
索引
1.1 プログラミング言語の役割
1.2 プログラミング言語の種類と歴史
1.3 プログラミング言語処理系
第1章の章末問題
第2章 コンパイラの全体構成
2.1 コンパイラの処理の概要
2.2 フロントエンド
2.3 バックエンド
2.4 本書で例題とするプログラミング言語
第2章の章末問題
第3章 字句解析
3.1 トークン
3.2 正則表現と有限状態オートマトン
第3章の章末問題
第4章 字句解析器生成系lex
4.1 lex記述
4.2 lex記述のコンパイルと実行
第4章の章末問題
第5章 構文解析の準備
5.1 文脈自由文法
5.2 導出
5.3 構文木と曖昧性
5.4 拡大文法とEoFトークン
5.5 構文解析手法の条件
第5章の章末問題
第6章 下向き構文解析
6.1 解析例
6.2 Director集合
6.3 構文解析アルゴリズム:空規則を含まない場合
6.4 構文解析アルゴリズム:空規則を含む場合
6.5 繰り返し計算
6.6 LL(1)文法
6.7 文法変換
6.8 下向き構文解析プログラムのコンパイルと実行
第6章の章末問題
第7章 上向き構文解析
7.1 解析例
7.2 LR(0)構文解析
7.3 SLR構文解析
7.4 LR(1)構文解析
7.5 LALR(1)構文解析
第7章の章末問題
第8章 構文解析器生成系yacc
8.1 SL1の文法
8.2 yacc記述
8.3 yacc記述のコンパイルと実行
8.4 yacc記述のデバッグ
第8章の章末問題
第9章 抽象構文木の構築
9.1 構文解析以後の処理
9.2 抽象構文木の仕様
9.3 SL0のための下向き構文解析による抽象構文木の構築
9.4 SL1のための上向き構文解析による抽象構文木の構築
第9章の章末問題
第10章 中間木の構築
10.1 記号表の設計
10.2 抽象構文木を走査する関数
10.3 抽象構文木の上の意味エラーチェック
10.4 データ型の埋め込み
第10章の章末問題
第11章 インタプリタとコンパイラ
11.1 インタプリタの作成
11.2 コンパイラの作成
11.3 コード最適化
11.4 本書で触れなかった事柄
第11章の章末問題
あとがき
索引