11次发布
0.3.0 | 2023年9月10日 |
---|---|
0.2.8 | 2022年11月29日 |
0.2.6 | 2020年6月22日 |
0.2.2 | 2020年5月31日 |
0.1.0 | 2020年5月30日 |
#1008 in 解析器实现
67 每月下载次数
用于 wrk-api-bench
295KB
7.5K SLoC
rslua
使用纯Rust编写的Lua 5.3词法分析和Lua解析器。
词法分析器
- 输入 str
- 输出 Result<&Vec<Token>, LexError>
use rslua::lexer::Lexer;
let mut lexer = Lexer::new();
let tokens = lexer.run(input_lua_code)?;
词法分析器配置
键 | 类型 | 默认值 | 描述 |
---|---|---|---|
use_origin_string |
bool | false | 使用原始字符串作为标记值,而不是转义值。 |
reserve_comments |
bool | false | 保留注释作为标记。 |
解析器
- 输入 &Vec<Token>
- 输出 Result<Block, SyntaxError>
let mut parser = Parser::new();
let block = parser.run(tokens)?;
AST遍历器
使用ast_walker
遍历AST,实现AstVisitor
特质以运行自定义逻辑。
完整示例
从./lua
文件夹中读取Lua源文件,解析它们,生成AST并遍历它们,使用实现了AstVisitor
特质的LuaWritter
结构体将格式化的Lua源代码重新生成到./tmp
文件夹。
依赖项
~0.3–0.9MB
~19K SLoC