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