1 个不稳定版本
使用旧版 Rust 2015
0.0.2 | 2017 年 5 月 8 日 |
---|
#166 in #lua
用于 llang
60KB
1K SLoC
nom-lua
Lua 5.3 解析器,使用 nom 编写
语法
- 代码块(需要测试)
- 代码块
- 语句
- ";"
- 变量列表 = 表达式列表
- 函数调用(依赖函数调用)
- 标签
- "break"
- goto
- do end
- while
- repeat until
- if
- for
- for in
- function(依赖函数名)
- local function
- local
- 返回语句(需要测试)
- 标签
- 变量列表(依赖变量)
- 变量
- 名称列表(需要测试)
- 表达式列表(需要测试)
- 表达式(需要测试)
- 数字
- 空值
- 布尔值
- 字符串字面量
- "..."
- 函数定义
- 前缀表达式
- 表构造器
- 运算符
- 前缀表达式(需要完成)
- 函数调用(依赖参数,前缀表达式)
- 参数(依赖表达式列表,表构造器,字符串字面量)
- 函数名
- 函数定义
- 函数体
- 参数列表
- 表构造器(需要测试)
- 字段列表(需要测试)
- 字段
- 字段分隔符
- 二进制运算符(优先级错误)
- 一元运算符
- 名称
- 数字
- 数字
- 十六进制数字
- 浮点数
- 十六进制浮点数
- 字面量字符串
- 短字面量
- 换行符
- 字节
- Unicode
- 转义字符
- '\z'
- 字面量
- 短字面量
待办事项
- 不同的整数和浮点数值(i32, f32)
- 更好的语法错误
- 溢出时回退到浮点数
- 基准测试
- 模糊测试
- 将测试改为失败而不是恐慌
- 在更多操作上强制执行 ASTNodes 的正确性。例如,BinOp 可以取 BinOp 枚举而不是 ASTNode
- 在 CI 上构建所有功能
许可证
nom-lua 主要在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。
有关详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT。
依赖项
~695KB
~14K SLoC