手写一个 PostScript 解释器:栈、字典与过程
来源:beyondloom.com — 2026-11-10
📋 概述
作者偏爱「一个人能自己写完」的语言,这篇用一个极简的 JavaScript 子集实现 PostScript 的核心机制:操作数栈、字典栈、名字查找、过程与数组。文中每个 PostScript 例子都是合法程序,在玩具实现和 Ghostscript 里行为一致。代码风格受 Forth 影响——每行一个短函数、纯函数优先、必要时才用全局状态。
🔑 核心要点
- 词法就够用:空白分隔的 token,加上 % / ( ) < > [ ] { } 这些自定界字符
- 带斜杠的 /name 把名字压栈,不带斜杠的名字查字典栈;{ } 收集成过程而不执行
- def 从栈上弹出过程与名字,在字典栈最顶层建立关联
- [ 压入 mark,] 弹到 mark 为止并把值组成数组,所以 [2 3 add] 等价于 [5]
- 作者承认这种风格难扫读,建议逐字符慢慢看,并在浏览器控制台里逐个试
- 省略了字符串、错误处理等大量特性,但讨论到的每个例子都与真实解释器行为一致
💡 金句
最值得信任的编程语言,是那些人能自己在一台随手可得的计算基底上从头写出来的语言。
← 返回 Lobsters 首页
👍 0
👎 0