用途:为安全研究设计的 Yaklang DSL 提供可直接运行的语法案例,帮助编写或理解 .yak 代码,避免凭空臆测语法。
主要能力:变量与类型(int/string/bool/float,整数除法截断);切片与 map(append、切片表达式、in 判断 key、delete);控制流(三段式 for、for-in、if/else if/else);函数(func/fn/def 字面量、命名函数、箭头函数、多返回值、闭包、可变参数 args...);f-string 插值 f"user=${user}" 与 sprintf;错误处理三板斧——手动 if err != nil、die(err)、波浪号 ret = codec.DecodeBase64(s)~,以及 defer + recover 捕获崩溃。热加载 hook 即把函数赋值给约定名字变量,如 beforeRequest、hijackHTTPRequest。
使用方式:示例 examples/syntax-tour.yak 与 examples/error-handling.yak 可用 yak <file> 自测;验证命令为 go run common/yak/cmd/yak.go skills/yaklang-syntax/examples/syntax-tour.yak 与 go run common/yak/cmd/yak.go skills/yaklang-syntax/examples/error-handling.yak,应 assert 全过并出现 self test passed。不确定 API 时用 desc(对象) 查看方法。
限制与坑:for-range 用 _ 占位会使值变 undefined,应写 for v in slice 或 for i, v in slice;箭头函数表达式体不被解析,须写 (x) => { return x * 2 };double 等可能是内置标识符,需换名;内置随机字节函数不叫 codec.RandomBytes;recover 后 panic 已跳过 return,需把易崩逻辑放进内层 run() 捕获。相关路由:总入口 yak、数据库语法 yaklang-database、实战 mitm-hotpatch / webfuzzer-hotpatch。