以 JimLang 开源项目为主线,亲手实现词法分析、递归下降 Parser、树遍历解释器、字节码编译器、栈式虚拟机与垃圾回收。不调黑盒,全程手写。
不同背景的学员,都能从这门课中获得价值
不理解词法分析→语法分析→AST流程,面试被问解释器和编译器的区别答不上来
能用 Java 实现一个完整的脚本语言,理解 Lexer/Parser/Interpreter 原理,面试编译器岗不虚
用 ANTLR4 但不懂原理,出错不会改,想自己实现一个轻量级解释器
能给公司设计并实现配置 DSL,能优化解析性能,能给团队做技术分享
看过 Python/JavaScript 源码但太复杂,想从简单的解释器学起
能实现自己的脚本语言(支持变量、函数、闭包),发布到 GitHub,参与语言设计讨论
从词法分析到字节码虚拟机,两条执行路径(树遍历解释器 + 栈式 VM),每章配套可运行 Demo 和单元测试。
编程语言是什么、不是什么。解释器 vs 编译器,代码的完整旅程,JimLang 整体架构导览。
Token 体系,手写状态机 Lexer,关键字/字符串/数字/注释处理,ANTLR4 词法规则对比。
CFG/BNF/EBNF,递归下降 Parser,Pratt 运算符优先级解析,AST 节点设计,ANTLR4 对比。
词法作用域,符号表,变量解析,闭包分析,动态类型检查与类型错误报告。
Visitor 模式树遍历解释器,Environment 链,函数对象与闭包捕获,class/this/super 面向对象。
try/catch/throw 异常传播,错误同步与恢复,友好错误信息,行号定位。
内置函数(print/clock/len/type),list/map 集合类型,迭代器模式,字符串处理与格式化。
18 条 OpCode 指令集,字节码编译器(表达式+语句),栈式虚拟机,CallFrame 函数调用帧。
标记清除 GC,可达性分析,循环引用,三色标记。REPL 实现:多行检测,错误恢复。
完整语言演示,树遍历 vs VM 性能对比,常量折叠,扩展方向:静态类型、JIT、协程。
不依赖任何解析器生成工具,从字符流到 Token 流,再到 AST,全程手写。同时对比 ANTLR4 方案,理解工具背后的原理。
先实现树遍历解释器(直接遍历 AST 执行),再实现字节码编译器 + 栈式 VM。通过性能对比,深刻理解两种方案的权衡。
从零实现标记清除 GC:可达性分析,循环引用处理,三色标记算法。理解 JVM/V8 GC 的底层原理。
函数对象、Upvalue 捕获、高阶函数,class 定义、this 绑定、单继承、super 调用。完整实现现代脚本语言的核心特性。
使用 Java 21 新特性(sealed interface、record、pattern matching)实现语言核心,ANTLR4 作为对比工具。
← 熵减智算