yfaming on Nostr: 接下来,开始 Crafting Interpreters 第二部分,用 C 实现的 Lox ...
接下来,开始 Crafting Interpreters 第二部分,用 C 实现的 Lox 字节码解释器 clox。
在第一部分,用 Java 实现的 tree-walk interpreter jlox 中,我们完整实现了 Lox 解释器,包括 scanner、parser、resolver、interpreter 等等。
但是,第一部分的解释器利用了 Java 语言的许多特性。
比如,Lox 的值,全部用 Java 的 Object 类型表示。
Lox 里的 return,用 Java 的异常来实现。
而 Java 自带 GC,所以 Lox 中对象的生命周期,我们也完全没考虑过。
在第二部分,我们将使用 C 语言实现解释器。C 比 Java 更加 low-level,它不支持 OOP,不支持异常和 GC。
因此,这几个问题,我们就需要在 C 里面手动处理了。
而且,第二部分我们实现的是字节码解释器。我们需要定义字节码,并在 parsing 将 ast 编译为字节码。
用不同语言实现同一门语言,但采用略有不同的技术,可以加深我们的理解,并学习 compiler/interpreter 领域的不同主题。
Published at
2026-08-14 10:03:01 UTCEvent JSON
{
"id": "1aea59b1f714db6bebf6019f30c55e36795d9bbba666682c752163c90db1acff",
"pubkey": "908fbc3babc322eea473a0ab1e6bf6b3adcf899288ac97b2fa79f34ad408d4e4",
"created_at": 1786701781,
"kind": 1,
"tags": [],
"content": "接下来,开始 Crafting Interpreters 第二部分,用 C 实现的 Lox 字节码解释器 clox。\n在第一部分,用 Java 实现的 tree-walk interpreter jlox 中,我们完整实现了 Lox 解释器,包括 scanner、parser、resolver、interpreter 等等。\n但是,第一部分的解释器利用了 Java 语言的许多特性。\n比如,Lox 的值,全部用 Java 的 Object 类型表示。\nLox 里的 return,用 Java 的异常来实现。\n而 Java 自带 GC,所以 Lox 中对象的生命周期,我们也完全没考虑过。\n\n在第二部分,我们将使用 C 语言实现解释器。C 比 Java 更加 low-level,它不支持 OOP,不支持异常和 GC。\n因此,这几个问题,我们就需要在 C 里面手动处理了。\n而且,第二部分我们实现的是字节码解释器。我们需要定义字节码,并在 parsing 将 ast 编译为字节码。\n\n\n用不同语言实现同一门语言,但采用略有不同的技术,可以加深我们的理解,并学习 compiler/interpreter 领域的不同主题。",
"sig": "8ab704da8b690e99161fcad1d28d88682c7eb88dd352ba14fb4f4d07814eeed183994ffe312eec0e3c9370b6ffeff3ddf7ab16a3e13729429fc4c8e749ca9c37"
}