rslua
rslua copied to clipboard
Yet another Lua lexer and Lua parser for Lua 5.3 written in pure Rust.
rslua
Yet another Lua lexer and Lua parser for Lua 5.3 written in pure Rust.
Lexer
- input str
- output Result<Vec<Token>, LexError>
use rslua::lexer::Lexer;
let mut lexer = Lexer::new();
let tokens = lexer.run(input_lua_code)?;
Lexer Config
Key | Type | Default | Descripten |
---|---|---|---|
use_origin_string |
bool | false | Use origin string as token value instead of escaped one. |
reserve_comments |
bool | false | Reserve comments as tokens. |
Parser
- input Vec<Token>
- output Result<Block, SyntaxError>
let mut parser = Parser::new();
let block = parser.run(tokens)?;
AST walker
Use ast_walker
to travel the AST, implement the AstVisitor
trait to run custom logic.
A complete example
Read Lua source files from ./lua
folder, parse them, generate ASTs and walk them through, use a LuaWritter
struct which impletements the AstVisitor
trait to re-generate formatted Lua source again to ./tmp
folder.
See tests/lua_to_lua.rs