从源码到运行结果
这个系列不只解释概念,而是围绕 MiniLang 实现一个小而完整的编译器。每章都保留术语边界,同时用 TypeScript 代码展示关键结构,让读者能理解真实编译器为什么要拆成这些阶段。
📖章节目录
共 10 章
🧭
已完成
第一章:语言与编译器全景
从 MiniLang 的第一段程序出发,理解源码如何经过 Token、AST、IR、字节码并在虚拟机中执行。
MiniLangASTVM
阅读章节
🔤
已完成
第二章:词法分析 Lexer
实现 MiniLang Lexer,把字符流切分为 TokenType、字面量和源码位置。
LexerTokenTypePosition
阅读章节
🌲
已完成
第三章:语法分析 Parser
用递归下降 Parser 处理语句、表达式、优先级和分组表达式。
Parser递归下降优先级
阅读章节
🧱
已完成
第四章:AST 与语义模型
设计 Expr、Stmt、CallExpr 和 IfStmt,让语义阶段能稳定遍历 MiniLang 程序。
ASTExprStmt
阅读章节
📚
已完成
第五章:作用域与符号表
用 Scope 和 SymbolInfo 处理声明、查找、重复声明与未定义变量诊断。
ScopeSymbolInfo诊断
阅读章节
✅
已完成
第六章:类型检查
实现 TypeChecker,检查 number、boolean、字符串、二元运算和函数返回值。
TypeCheckernumberboolean
阅读章节
🔁
已完成
第七章:中间表示 IR
把 AST 降低为 IRInstruction 和 BasicBlock,显式表示标签、跳转与控制流。
IRBasicBlock控制流
阅读章节
⚙️
已完成
第八章:基础优化
实现常量折叠、死代码删除和简单跳转清理,并坚持语义正确先于速度。
优化常量折叠死代码
阅读章节
🖥️
已完成
第九章:字节码与虚拟机
生成 Instruction,并在基于操作数栈、CallFrame 和 VM 的虚拟机中运行。
字节码VMInstruction
阅读章节
🧪
已完成
第十章:诊断、运行时与下一步
整理诊断、运行时错误、测试编译器的方法,并规划 WebAssembly 等扩展路径。
诊断测试WebAssembly
阅读章节