「近藤嘉雪のプログラミング工房」のホームへ ホーム > 著書・訳書・執筆記事 > 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.