明快入門 インタプリタ開発 基本技術から処理系の実装まで
明快入門 インタプリタ開発 基本技術から処理系の実装まで (林晴比古実用マスターシリーズ)
ソフトバンククリエイティブ
著者:林晴比古
まえがき
目次
第1章 インタプリタの基礎
1.1 楽しみながら開発する
コンパクトな仕様にする
定石に学ぶ
分かりやすいコードにする
少しずつ詳細化する
1.2 コンパイラとインタプリタ
機械語とアセンブラ言語
高級言語
コンパイラ
インタプリタ
1.3 インタプリタの構成
処理系の構成
字句解析
内部コード生成
構文解析と実行
1.4 本書で想定する実行環境
仮想スタックマシン
プログラムの格納領域
オペランドスタック領域
メモリ構成
レジスタ構成
記号表領域
1.5 本書で開発する処理系
モデル処理系の考え方
BBIインタプリタの言語使用
1.6 BBIインタプリタ用サンプルプログラム
足し算プログラム
素数を求めるプログラム
クイックソートプログラム
第2章 文法の表現
2.1 構文図記法
2.2 BNF記法
2.3 終端記号と非終端記号
2.4 BNF記法の別表現
2.5 拡張BNF記法
2.6 言語使用の設計
第3章 字句解析
3.1 字句とトークン
3.2 字句解析ルーチンの役割
3.3 コメントの除去
3.4 文字種表の設定
3.5 列挙定数値の工夫
3.6 トークンの取得
識別子の取得
数値定数の取得
文字列リテラルの取得
演算子の取得
字句解析プログラム
第4章 内部コードへの変換
4.1 トークンの短縮化
キーワードと演算子記号の変換
ジャンプ先アドレスの埋め込み
関数呼び出しのコード化
変数のコード化
定数のコード化
変換後の内部コード形式
4.2 飛び先番号の取得
4.3 ブロックの構成
4.4 静的な構文チェック
静的チェックの必要性
制御文の構造チェック
関数定義位置のチェック
breakとreturnの位置チェック
式のチェック
4.5 内部コードの格納
4.6 BBIインタプリタのエラー処理
第5章 式の解析
5.1 式の表現
5.2 演算子順位表による構文解析
逆ポーランド記法を使う式解析
変換パターン
変換する方法
式の評価
逆ポーランド記法とプログラム
5.3 再帰的下向き構文解析
構文規則を使う構文解析
再帰的下向き構文解析ルーチン
電卓プログラムを作る
再帰的下向き構文解析とスタック処理
C方式の構文規則
C方式の式解析ルーチン
解析ルーチンの再帰的記述
5.4 解析木と構文木
解析木を作る
構文木を作る
第6章 宣言の処理と記号表
6.1 記号表の作成
6.2 記号表への登録
6.3 記号表の探索
リニアサーチ
バイナリサーチ
ハッシュ法
C++のSTLを使う方法
6.4 解析処理の開始
グローバル領域の処理
関数名の先行処理
識別子の設定
スタートアップ処理と終了処理
6.5 変数宣言の処理
変数宣言の処理方法
配列宣言と整数定数の判定
大域名と局所名の管理
変数アドレスの設定
初期化の処理
6.6 暗黙の変数宣言
6.7 暗黙の変数宣言の禁止
6.8 関数定義の処理
関数定義の処理方法
局所用記号表の用意
引数の処理
関数の実行関数アドレスの設定
引数アドレスの設定
関数本体の解析
フレームサイズの設定
main関数の処理
第7章 構文チェック
7.1 構文チェックのタイミング
7.2 構文チェックの方法
7.3 構文チェックのサポート
第8章 インタプリタの実行管理
8.1 プログラムの実行
8.2 コードの取得
8.3 プログラムの終了
第9章 式の実行
9.1 一次式の処理
一次式とは
数値定数の処理
文字列リテラルのそり
変数の大域・局所判定
左辺値と右辺値
単純変数の処理
配列変数の処理とアドレス取得
関数呼び出しの処理
カッコの処理
9.2 単項演算子の処理
9.3 二項演算子の処理
標準的な二項演算子の処理
型チェックと型変換
9.4定数畳み込み
第10章 文の実行
10.1 文とブロック
10.2 ブロック
ブロックの処理
10.3 代入文
10.4 while文
10.5 for文
10.6 if文
10.7 break文
breakの処理
breakによる実行終了処理
10.8 exit文
exit文の処理
exitによる実行終了
10.9 return文
returnの処理
returnに様る実行終了処理
第11章 関数呼び出しと関数処理
11.1 BBIインタプリタの関数
11.2 関数呼び出しの方法
11.3 環境情報の保存
11.4 フレームの処理
11.5 オペランドスタックと実行時スタック
11.6 関数の呼び出し処理
呼び出し手順
引数の積み込み順序
11.7 関数の入口処理
実行環境情報の設定
フレームの確保
ローカルメモリサイズのチェック
引数の格納処理
戻り番地のあつかい
11.8 関数の本体処理
11.9 関数の出口処理
第12章 組み込み関数
12.1 ステートメントと組み込み関数の用意
12.2 組み込み関数の実行
第13章 機能強化の方法
13.1 概要
13.2 データ型の追加
13.3 文字列型の処理
13.4 定数機能
13.5 定数計算
13.6 初期化機能
13.7 演算子の追加
13.8 制御文の追加
13.9 標準関数の追加
13.10 入出力標準関数
13.11 マルチステートメント
第14章 C++言語のポイント
14.1 関数の多重定義
14.2 デフォルト引数
14.3 vectorコンテナ
14.4 stackコンテナアダプタ
14.5 クラス
14.6例外処理
第15章 BBIインタプリタ 全ソースプログラム
ファイル構成
開発環境と動作確認
プログラムコードについて
逆引き関数名一蘭
INDEX
Note
関数の名前