- 発売日:2024/06/12
- 出版社:技術評論社
- ISBN/JAN:9784297141929
目次
■第1章:プログラミング言語概論
・プログラミング言語の分類
・他の切り口での分類方法
・コンパイルパイプライン
■第2章:スタックベース仮想マシン
・仮想マシン概論
・Rustでの実装
・標準入力からの読み込み
・パースとコマンドの実行
・ブロックとネスト構造
・if制御構文
・変数の定義
・複数行のソースコードへの対応
・関数呼び出し
・関数の再帰呼び出し
・WebAssemblyへのコンパイルとブラウザでの実行
■第3章:プログラミング言語の構文解析
・構文解析が解決する課題
・構文へのマッチ
・トークンの切り出し
・括弧によるグループ化
・木構造の構築
・式の構文木
・パーサコンビネータnom
・Parsing Expression Grammarによる構文解析
・ASTインタプリタ
・関数呼び出しの構文と評価
・設定ファイルへの応用
■第4章:スクリプト言語ランタイム
・本章で設計する言語
・構文と意味論
・AST実行モデル
・文(Statement)の導入
・変数宣言
・代入文
・条件分岐
・ループ
・関数定義
・その他の制御構文
・動的型の導入
■第5章:静的型付けと型チェック
・静的型システムの概要
・型チェックの基本構成法
・型宣言
・式と文の型チェック
・組み込み関数の型定義
・エラー位置の報告
■第6章:バイトコードへのコンパイル
・バイトコードとネイティブコード
・スタックマシンとレジスタマシン
・命令セットの特徴と設計
・バイトコードの構成
・最小限のバイトコードの定義と実行
・バイトコードへのコンパイル
・リテラルテーブルの実装
・任意のソースコードをパースしてバイトコードへ翻訳
・完全な式のコンパイルと実行
・条件分岐式のコンパイルと実行
・ループ制御のコンパイルと実行
・ユーザー定義関数
・型チェッカーとの統合
・状態マシンとコルーチン
・コルーチンオブジェクトとジェネレータ
・応用例
■第7章:LLVMを使ったネイティブコードへのコンパイル
・llvm-sysとinkwell
・inkwellでのHello, world!
・ネイティブコードによるパフォーマンスの向上
・プログラミング言語の分類
・他の切り口での分類方法
・コンパイルパイプライン
■第2章:スタックベース仮想マシン
・仮想マシン概論
・Rustでの実装
・標準入力からの読み込み
・パースとコマンドの実行
・ブロックとネスト構造
・if制御構文
・変数の定義
・複数行のソースコードへの対応
・関数呼び出し
・関数の再帰呼び出し
・WebAssemblyへのコンパイルとブラウザでの実行
■第3章:プログラミング言語の構文解析
・構文解析が解決する課題
・構文へのマッチ
・トークンの切り出し
・括弧によるグループ化
・木構造の構築
・式の構文木
・パーサコンビネータnom
・Parsing Expression Grammarによる構文解析
・ASTインタプリタ
・関数呼び出しの構文と評価
・設定ファイルへの応用
■第4章:スクリプト言語ランタイム
・本章で設計する言語
・構文と意味論
・AST実行モデル
・文(Statement)の導入
・変数宣言
・代入文
・条件分岐
・ループ
・関数定義
・その他の制御構文
・動的型の導入
■第5章:静的型付けと型チェック
・静的型システムの概要
・型チェックの基本構成法
・型宣言
・式と文の型チェック
・組み込み関数の型定義
・エラー位置の報告
■第6章:バイトコードへのコンパイル
・バイトコードとネイティブコード
・スタックマシンとレジスタマシン
・命令セットの特徴と設計
・バイトコードの構成
・最小限のバイトコードの定義と実行
・バイトコードへのコンパイル
・リテラルテーブルの実装
・任意のソースコードをパースしてバイトコードへ翻訳
・完全な式のコンパイルと実行
・条件分岐式のコンパイルと実行
・ループ制御のコンパイルと実行
・ユーザー定義関数
・型チェッカーとの統合
・状態マシンとコルーチン
・コルーチンオブジェクトとジェネレータ
・応用例
■第7章:LLVMを使ったネイティブコードへのコンパイル
・llvm-sysとinkwell
・inkwellでのHello, world!
・ネイティブコードによるパフォーマンスの向上
