第1章 概説 1 |
1.1 はじめに 1 |
1.2 属性文法とは 2 |
1.3 属性文法の定義 6 |
1.4 非循環属性文法と絶対非循環属性文法 10 |
練習問題の解答 14 |
参考文献 14 |
第2章 属性評価器と文法のクラス 17 |
2.1 はじめに 17 |
2.2 純粋多重戦略属性文法 17 |
2.3 単純多重戦略属性文法 21 |
2.4 属性文法の静的複雑さ 24 |
2.5 属性文法に関する決定問題の複雑さ 26 |
2.6 属性文法の変換能力 27 |
練習問題の解答 30 |
参考文献 31 |
第3章 コンパイラの記述 33 |
3.1 はじめに 33 |
3.2 属性文法に基づくコンパイラ生成系と記述のサーベイ 34 |
3.3 1パス型属性文法に基づく生成系Rieのあらまし 38 |
3.4 属性文法によるPL/0コンパイラの記述 38 |
3.4.1 PL/0言語 38 |
3.4.2 PL/0処理系の構成 39 |
3.4.3 Lexによる字句解析器の記述 42 |
3.4.4 Rieによる構文・意味解析と中間コード生成 43 |
3.5 属性文法によるコンパイラ記述の評価 56 |
3.6 おわりに 58 |
参考文献 70 |
第4章 ソフトウェア環境への応用 73 |
4.1 はじめに 73 |
4.2 属性文法に基づく構造エディタ生成系 73 |
4.3 インクリメンタル属性評価器 78 |
4.4 Synthesizer Generatorの利用例 80 |
4.4.1 Synthesizer Generatorによるコンパイラ 80 |
4.4.2 図形エディタ 82 |
4.4.3 意味検査エディタ 84 |
4.5 非同期多値変更 85 |
4.6 変換属性文法 87 |
4.7 高階属性文法 89 |
4.8 時間属性超グラフ文法 90 |
4.9 オブジェクト指向属性文法 92 |
4.10 展望 97 |
参考文献 97 |
第5章 新しい応用 101 |
5.1 はしめに 101 |
5.2 計算と変換としての属性評価 102 |
5.3 イメージ処理:配列→4分木変換問題 106 |
5.4 自然言語処理:文生成 111 |
5.5 知識ベース:二項関係/推論知識の表現 119 |
5.6 プログラム合成:関数型プログラミング 121 |
5.7 仕様記述あるいはプログラムとしての属性文法 127 |
5.8 おわりに 129 |
参考文献 130 |
第6章 今後の研究と展望 135 |
6.1 はじめに 135 |
6.2 計算モデルとしての属性文法 136 |
6.2.1 属性文法の基本的定式化 136 |
6.2.2 属性文法の規定する計算=構造指向的関数計算 139 |
6.3 構造指向的計算モデルとしての属性文法 141 |
6.3.1 階層的構造データ処理の記述 141 |
6.3.2 作業・実行過程の分解の記述 143 |
6.3.3 木構造の可能性と限界 145 |
6.4 関数的計算モデルとしての属性文法 146 |
6.5 属性文法基本計算モデルの拡張 147 |
6.5.1 基本計算モデルの問題点 147 |
6.5.2 大域変数 147 |
6.5.3 基本計算モデルの拡張 148 |
6.6 属性評価 151 |
6.6.1 属性評価一般 151 |
6.6.2 漸増的属性評価 152 |
6.6.3 属性値の格納 153 |
6.7 おわりに 153 |
参考文献 154 |
索引 157 |