本專案收錄計算理論與語言直譯器的經典實作,是學習電腦科學核心概念的個人教材。
從有限狀態機到圖靈機,展示計算的本質與極限。
┌─────────────────────────────────────┐
│ Turing Machine │
├─────────────────────────────────────┤
│ Lambda Calculus │
├─────────────────────────────────────┤
│ Context-Free Grammar │
├─────────────────────────────────────┤
│ Regular FSM │
└─────────────────────────────────────┘
- 停機問題 - 不存在程式能判斷任意程式是否停止
- 通用圖靈機 - 可模擬任何其他圖靈機
- Church-Turing 論點 - Lambda 與圖靈機計算能力相同
五種語言的直譯器實作,展示不同典範:
| 直譯器 |
語言 |
行數 |
特色 |
| basic/ |
BASIC |
129 |
行號導向、簡單直譯 |
| js0i/ |
JavaScript |
635 |
完整語法樹、Tree-walking |
| lisp/ |
Lisp |
101 |
S-expression、元程式 |
| prolog/ |
Prolog |
280 |
模式比對、Backtracking |
| py0i/ |
Python |
1017 |
AST 直譯、完整標準庫 |
原始碼 → Lexer → Parser → AST → Evaluator → 輸出
# 直譯器
python3 interpreter/basic/basic.py interpreter/basic/bas/hello.bas
node interpreter/js0i/js0i.js script.js
python3 interpreter/lisp/lisp.py program.lisp
python3 interpreter/prolog/prolog.py program.pl
python3 interpreter/py0i/py0i.py script.py
# 測試
./interpreter/py0i/test.sh
./interpreter/basic/test.sh
./theory/lambda/03-interpreter/test.sh
- 語言設計: 正規文法 → 語法分析 → 編譯原理
- 計算極限: 什麼能算、什麼不能算
- 抽象思維: 從具體機器到抽象模型
- 實現能力: 從理論到代碼的轉換