The Lox Playground

关于 Lox Playground

Lox Playground 可以让你借助 BlueLox 的 WASM 版本在浏览器中运行你的 Lox 代码。 BlueLox 是一个基于AST语法树的 Lox 解释器,使用 Golang 实现。

Lox 是 Robert Nystrom 设计的编程语言,在他精辟的书 《Crafting Interpreters(手写两个解释器)》 中作为实现对象。他在书里实现了一个Java的AST语法树解释器(jlox)和一个C的机器码解释器(clox), 附带循循善诱的解释,走心的手绘插图以及满满一袋关于早餐的比喻和笑话。

Lox Playground 可以作为你在学习和编程时的试错工具和参考实现。

BlueLox 的实现和 jlox 几乎一致,但有以下例外:

  • 语法解析(lexer)以 UTF-8 码点(而不是 byte)为最小工作单位,并且它会处理字符串中的这些转义字符:\a, \b, \f, \n, \r, \t, \v, \\\"
  • 报错信息不会和 jlox 逐字逐句地相同,但是它们在语意上会保持一致。
  • 为了支持 Playground 的例子,我新增了两个原生函数sleep(millisecond)randN(n)

Lox Playground 须要你的浏览器支持 WASM. 如果你遇到了问题,可以在 BlueLox 的仓库 进行反馈。欢迎建议,贡献和 star !