コンパイラ
本書はコンパイラの構成方法について,Yacc/Lexによる実際に動作可能なプログラムを用いて解説。字句解析,構文解析,意味解析,実行時環境,コード生成を説明の後,簡単なコンパイラの作成例について具体的に述べている。
- 発行年月日
- 2007/07/06
- 判型
- A5
- ページ数
- 206ページ
- ISBN
- 978-4-339-02708-2
- 内容紹介
- 目次
本書はコンパイラの構成方法について,Yacc/Lexによる実際に動作可能なプログラムを用いて解説。字句解析,構文解析,意味解析,実行時環境,コード生成を説明の後,簡単なコンパイラの作成例について具体的に述べている。
1. はじめに
1.1 コンパイラとは
1.2 コンパイラの構成
1.3 字句解析
1.4 構文解析
1.5 意味解析
1.6 中間コード,最適化,目的コード生成
演習問題
2. 字句解析
2.1 字句解析の演習
2.1.1 字句解析器生成系lex の概要
2.1.2 正規表現
2.1.3 lexの使用例
2.1.4 lex記述について
2.1.5 プログラム例
2.1.6 yytext
2.1.7 例題
2.2 字句解析の理論
2.2.1 字句解析のあらまし
2.2.2 正規表現から字句解析器へ
2.2.3 その他
演習問題
3. 構文解析
3.1 準備
3.1.1 文脈自由文法
3.1.2 記法の慣習
3.1.3 導出と還元
3.1.4 文法の読み方・書き方
3.1.5 曖昧な文法
3.2 上向き構文解析
3.2.1 構文解析器生成系yaccによる上向き構文解析プログラムの作成
3.2.2 yaccの動作原理のあらまし
3.2.3 yaccとlexとの連携
3.2.4 アクションを使った例題
3.2.5 シフト還元構文解析
3.2.6 LR構文解析
3.3 再帰的下向き構文解析
3.3.1 下向き構文解析の概要
3.3.2 下向き構文解析の問題点
3.3.3 LL構文解析
3.3.4 再帰的下向き構文解析プログラム
3.3.5 再帰的下向き構文解析器作成の例
3.3.6 アルゴリズムの検討
3.3.7 正規右辺文法の導入
3.4 再帰的下向き構文解析の例題
4.意味解析
4.1 意味解析の概要
4.2 記号表
4.2.1 入れ子型静的スコープ
4.2.2 各種データ構造
4.2.3 リンクトリストによる記号表の実装
4.3 型の扱いについて
4.3.1 型について
4.3.2 型のチェックについて
4.4 1パス型の解析について
4.5 意味解析の例題
4.5.1 言語仕様
4.5.2 字句解析器および構文解析器の作成の例題
4.5.3 意味解析アクションの追加
5.実行時環境
5.1 実行時記憶
5.2 関数呼出しについて
5.3 入れ子型の関数宣言
5.4 活性レコード
5.5 変数の値の参照について
5.6 関数の引数の渡し方
5.7 関数呼出しとその戻りの処理
5.7.1 関数呼出し時の処理
5.7.2 呼出し元へ戻るときの処理
5.8 他のフェーズとの関連
5.9 おわりに
6.仮想計算機とコード生成
6.1 仮想計算機
6.1.1 仮想計算機のモデル
6.1.2 PL/0マシン
6.1.3 PL/0コード
6.2 コードの生成
6.2.1 意味解析 —レベル,オフセット,記号表—
6.2.2 プログラムの終了コード
6.2.3 変数および定数のコード
6.2.4 算術式のコード
6.2.5 代入文のコード
6.2.6 条件(if)文のコード
6.2.7 繰返し(while)文のコード
6.2.8 関数呼出し
6.2.9 組込み関数
7.まとめの演習
7.1 手作業によるPL/0コードの生成
7.2 解答例
7.3 小さなプログラミング言語cmm
7.3.1 cmmの構文
7.3.2 コンパイラ作成 —準備—
7.3.3 ステップ1
7.3.4 ステップ2
7.3.5 ステップ3
7.4 おわりに
引用・参考文献
索引