アルゴリズム

コンパイラ

佐渡一広
寺島美昭
水野忠則
共立出版

刊行にあたって
はじめに

第1章 プログラムが動作する仕組み

  • 1.1 コンピュータの仕組み
  • 1.2 プログラム開発の目的
  • 1.3 コンピュータの発展と問題点

第2章 言語が動作する仕組み

  • 2.1 自然言語と人工言語
  • 2.2 プログラミング言語と機械語
  • 2.3 言語を動作させる工夫
  • 2.4 アルゴリズム

第3章 字句解析

  • 3.1 トークン
  • 3.2 トークンの種類
  • 3.3 字句解析の手法
  • 3.4 状態遷移図の表による表現
  • 3.5 トークンの定義
  • 3.6 字句解析のツール

第4章 文法

  • 4.1 規格の必要性
  • 4.2 文法と言語
  • 4.3 導出
  • 4.4 構文木
  • 4.5 BNF
  • 4.6 構文木と演算子の記法

第5章 下向構文解析

  • 5.1 再帰下降法
  • 5.2 演算子の追加
  • 5.3 文法からの下向構文解析の生成
  • 5.4 LL(k)構文解析

第6章 yaccによる構文解析

  • 6.1 yacc
  • 6.2 演算子の優先順位

第7章 上向構文解析

  • 7.1 SLR構文解析
  • 7.2 SLRの動作の仕組み
  • 7.3 SLR(k)
  • 7.4 正規LR構文解析
  • 7.5 SLRとLRの違い

第8章 yaccの仕組み:LALR構文解析

  • 8.1 LALR構文解析
  • 8.2 LALR構文解析の状態集合
  • 8.3 あいまいな文法

第9章 構文木と意味づけ

  • 9.1 意味づけ
  • 9.2 記号の管理
  • 9.3 スコープを考えない記号表
  • 9.4 スコープの処理
  • 9.5 属性文法
  • 9.6 中間言語
  • 9.7 機械独立性

第10章 コード生成

  • 10.1 コード生成
  • 10.2 レジスタ割り当て
  • 10.3 スタック型コンピュータ
  • 10.4 クロスコンパイラ

第11章 関数・手続きの処理

  • 11.1 関数の処理の例
  • 11.2 関数の呼び出し
  • 11.3 大域変数
  • 11.4 静的バインディングと動的バインディング
  • 11.5 引数の種類
  • 11.6 結合編集

第12章 最適化

  • 12.1 最適化
  • 12.2 機械独立の最適化
  • 12.3 プログラムのフローダイアグラム
  • 12.4 機械依存の最適化
  • 12.5 機械語命令レベルの最適化
  • 12.6 最適化の注意

第13章 インタプリタと仮想計算機

  • 13.1 さまざまな実行方法
  • 13.2 インタプリタ
  • 13.3 コンパイラインタプリタ
  • 13.4 仮想計算機
  • 13.5 プログラミング言語向きアーキテクチャ
  • 13.6 インタプリタ的機械の生成

索引