- 通过
go
安装:go install github.com/lollipopkit/lk@latest
- Release 下载
详细说明可以运行 lk --help
查看
# 进入REPL交互式解释器
lk
# 执行.lk(c)文件
lk <file>
# 编译.lk文件
lk -c <file>
# 为.lk文件,生成语法树
lk -a <file>
// http 发送请求示例
resp, code, err := http.req(
'POST', // Method
'https://http.lolli.tech/post', // URL
{'accept': 'application/json'}, // Headers
{'foo': 'bar'} // Body
)
if err != nil {
errorf('http req: %s', err) // 内置的 error(f) 方法
}
printf('code: %d, body: %s', code, resp)
// json 解析
obj, err := json(resp)
if err != nil {
errorf('json parse: %s', err)
}
foo := obj['json']['foo']
// 正则匹配
if foo != nil and foo:match('[bar]{3}') {
printf('match: %s', foo)
}
- 语法
- 注释:
//
/* */
- 去除
repeat
,until
,goto
,..
(concat
) - Raw String, 使用
`
包裹字符 - 面向对象
- 自动添加
range
(paris
) - 语法糖
- 三元操作符
a ? b : c
-
a == nil ? b : a
->a ?? b
-
shy a = b
->a := b
-
shy a = fn(b) {rt c}
->shy a = fn(b) => c
- 支持
a++
a+=b
等
- 三元操作符
- Table
- key为StringExp,而不是NameExp
- 构造方式:
=
->:
, eg:{a = 'a'}
->{a: 'a'}
- 索引从
0
开始 - 改变
metatable
设置方式 - 支持
a.0
(等同于a[0]
)
- 注释:
- CLI
- 支持传入参数 (
lk args.lk arg1
->os.args
==[lk, args.lk, arg1]
) - 报错时输出调用栈
- REPL,直接运行
./lk
即可进入- 支持方向键
- 识别代码块
- 支持传入参数 (
- 资源
- 文档
-
LANG.md
- 测试集,位于
test
文件夹
-
- IDE
- VSCode高亮
- 文档
- Vscode插件:高亮
lollipopkit 2023 GPL v3