Austin Henley 给自己设定了一个约束:用 1024 字节的 C 语言编写一个 Python 解释器,不使用宏,不使用库。结果与其说是一个 Python 实现,不如说是一个恰好接受类似 Python 语法的 Python 风格计算器。

终端截图捕捉了完整工作流:检查高尔夫版 C 文件恰好为 1024 字节,用 gcc 编译,并执行 fizzbuzz 以演示解释器产生正确输出。
该解释器将整个程序存放在一个固定的 999 字符源码缓冲区中,配备一个 256 项的符号表用于单字母小写变量。它即时分词——剥离空白、假设关键字拼写正确、并将以 'f' 开头的行视为 for 循环、'w' 视为 while、'i' 视为 if、'd' 视为 def、'p' 视为 print。没有错误恢复;它对输入的正确性做了大量假设。
表达式在解析过程中通过标准的递归下降遍历求值。控制流块持续到缩进减少,利用 C 的调用栈实现嵌套。循环通过记录条件表达式的位置,然后向后跳转并在每次迭代时重新解析源代码来工作。函数保存调用者的位置,调用时跳转到函数体,到达末尾时恢复调用者。不生成中间表示。
特性列表经过刻意精简:整数字面量和单字母变量、赋值、带优先级的 + - * % 运算、< > <= >= == 比较、整数真值、if/else、带 else 块的 while/for、无参数函数定义和调用、基于缩进且无作用域的块、以及用于字符串或整数的 print。
Henley 利用 Stack Overflow“C 语言代码高尔夫技巧”帖子中的技术,将可读的 4800 多字节版本压缩到恰好 1024 字节:单字母名称、隐式 int、用 ASCII 值代替字符字面量、三元运算符和逗号运算符、用位运算代替逻辑运算。压缩后的源码是一个单一的密集代码块;可读版本与其一同保存在 GitHub 上。

此截图显示了整个最小化的 C 源码。Stack Overflow 高尔夫帖子中的每种技术都清晰可见:隐式 int、ASCII 字面量、逗号和三元运算符、位运算技巧,以及被压缩成一个密集代码块的单字符标识符。
该解释器是一个演示,而非生产工具。它假设输入格式良好,每个表达式仅支持一次比较,且仅在表达式开头处理一元加减号。Henley 指出,他可能能让单单 fizzbuzz 的实现低于 800 字节。