| ホーム > 著書・訳書・執筆記事 > yaccによるCコンパイラプログラミング | ||||
|
|
yaccによるCコンパイラプログラミング 目次
第1部 yacc入門
第1章 yaccとは
1.1 コンパイラコンパイラ
1.2 コンパイラの内部構造
1.3 フロントエンドとコードジェネレータ
1.4 自動生成ツール
1.5 パーサジェネレータyacc
第2章 形式言語理論
2.1 形式言語理論とは
2.2 プログラミング言語の歩み
2.3 句構造文法
2.3.1 句構造文法とは
2.3.2 正規文法
2.3.3 文脈自由文法
2.3.4 文脈規定文法
2.3.5 無制限文法
2.4 プログラミング言語と文脈自由文法
2.5 BNF記法
2.6 構文図
第3章 yaccの仕組み
3.1 トップダウンとボトムアップ
3.2 再帰下降パーサ
3.3 LRパーサ
3.4 LRパーサの仕組み
第4章 電卓プログラム
4.1 簡易電卓プログラムcalc
4.2 文法を定義する
4.3 アクションを付加する
4.4 レキシカルアナライザを作る
4.5 KM-yaccの起動法
4.6 優先順位と結合方法
4.7 演算子の追加
4.8 変数と代入
第2部 コンパイラを作る
第5章 コンパイラの仕組み
5.1 コンパイラの構造
5.2 レキシカルアナライザとパーザ
5.3 意味解析
5.4 中部表現(中間コード)
5.4.1 ポストフィクス記法
5.4.2 3アドレスコード(4つ組)
5.4.3 2アドレスコード(3つ組)
5.5 シンボルテーブル
5.6 エラー処理(エラーリカバリ)
5.7 最適化とコード生成(コードジェネレータ)
5.7.1 コード生成
5.7.2 最適化の技法
第6章 Getting Started
6.1 Cm言語の仕様
6.2 Cmコンパイラの構成
第7章 文法の定義
7.1 文法を定義する前に
7.2 %unionと%type
7.3 トークンを定義する
7.4 優先順位を定義する
7.5 文法を定義する
7.5.1 式を定義する
7.5.2 文を定義する
7.5.3 宣言を定義する
7.5.4 プログラムを定義する
第8章 メインルーチンと共通ヘッダファイル
8.1 ヘッダファイルcmdef.h
8.2 メインルーチンmain.c
第9章 レキシカルアナライザ
9.1 レキシカルアナライザlex.c
9.2 文字列の処理lexstr.c
第10章 ヒープ領域管理
10.1 なぜ自前でメモリ管理をするのか?
10.2 ヒープ領域操作heap.c
第11章 宣言の処理
11.1 宣言のセマンティックアクション
11.2 シンボルテーブル
11.3 型テーブル
11.4 シンボルテーブルへの登録
11.5 typdefとstruct/unionの実現法
11.5.1 typedefの実現
11.5.2 struct/union/enumの実現
第12章 コード生成の方針
12.1 命令セットと直交性
12.2 レジスタの役割
12.3 関数のコード生成
12.3.1 関数とスタック
12.3.2 パラメータの渡し方
12.3.3 関数呼び出しプロトコル
第13章 式の木構造表現
13.1 構造体EXPR型
13.2 補助ルーチン群misc.c
13.3 木構造の組み立て
13.4 l-valueの扱い
13.5 加算と減算
13.6 関数呼び出し
13.7 制御構造とブール式
第14章 式のコード生成
14.1 コード生成のための補助関数
14.2 コード生成のパターン
14.3 副作用をもつ演算子
14.4 比較演算子と論理演算子
14.5 改良の余地
第15章 文のコード生成
15.1 文のコード生成の方針
15.2 break文とcontinue文
15.3 for文のコード生成
15.4 switch文のコード生成
15.5 goto文とラベル
付録 A スタートアップルーチンと標準ライブラリ
付録 B Cmコンパイラのオブジェクトコード
参考文献
索引
関数索引
|
|||
|
Copyright (C) 2002 Yoshiyuki Kondo, All rights reserved. |
||||