Blog
Snippets
Moment
Projects
About
More
Cha Playground
☕ Cha(茶)——我用 TypeScript 从零手写的编程语言,现在整个解释器就跑在你浏览器里。会话模式:变量与函数在多次运行之间保留;超过 5 秒自动终止,放心写循环。
☕
Cha Playground
会话模式:变量跨次运行保留
重置
运行
Ctrl↵
初见
递归
闭包
FizzBuzz
标准库
var 杯子 = ["龙井", "普洱", "铁观音"]; fn 冲泡(茶名, 次数) { return "第 ${次数} 泡 ${茶名}"; } for (var i = 1; i <= len(杯子); i += 1) { print(冲泡(杯子[i - 1], i)); }
点击「运行」或按 Ctrl+Enter 查看输出
这是什么
解释器来自开源项目
cha-lang
:手写词法分析器 → 递归下降解析器 → 静态作用域解析 → 树遍历求值,零依赖
编译成 28KB 的 Worker 脚本加载进本页,没有任何服务端参与
支持中文变量名、模板字符串插值(可嵌套)、闭包、递归、数组与 map
语法速查见系列文章与
README
;报错信息是中文的,会告诉你哪里错、怎么改
系列文章
手写一门编程语言 (一)设计图纸:在写第一行代码之前
手写一门编程语言 (二)词法分析器与最难的十行模板字符串
手写一门编程语言 (三)解析器:优先级是「降」出来的
手写一门编程语言 (四)求值器:一门语言的「运行时」长什么样
手写一门编程语言 (五)作用域解析:让错误提前爆炸
手写一门编程语言 (六)REPL:改了三遍才像样的第一印象
手写一门编程语言 (七)错误体验:「报错是脸面」的完整故事
(八)字节码 VM:筹备中
问 AI