# lua_rust
[](https://crates.io/crates/lua_ir)
[](https://docs.rs/lua_ir)
lua syntax parser & runtime interpreter in Rust
- LALR(1), GLR parser with [RustyLR](https://github.com/ehwan/RustyLR)
- syntax referenced from [lua 5.4 reference manual](https://www.lua.org/manual/5.4/manual.html)
- ***Greatly in progress***
- grammar fully implemented
- std library barely implemented
## Cargo Features
- `32bit`: use 32bit integer and float for `lua numeric` type
## How to use
### As REPL interpreter
clone this repository and simply run
```
$ cargo run <source_file.lua>
```
or
```
$ cargo run
```
will start lua REPL. Note that this executable is not `cargo publish`ed.
### As Library
add [`lua_ir`](https://crates.io/crates/lua_ir) crate to your `Cargo.toml`
```toml
[dependencies]
lua_ir = "..."
```
```rust
let mut env = lua_ir::LuaEnv::new();
env.eval_chunk( b"var_hello = 'Hello'" )?;
env.eval_chunk( b"var_world = 'World'" )?;
env.eval_chunk( b"print( var_hello .. ', ' .. var_world .. '!' )" )?;
// Hello, World!
let hello_value = env.get_global( "var_hello" )?;
let world_value = env.get_global( "var_world" )?;
env.set_global( "var_hello", 10.into() )?;
```