Skip to content
/ lua_rust Public

lua syntax parser & interpreter in Rust

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

ehwan/lua_rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Oct 26, 2024
49c616c · Oct 26, 2024

History

79 Commits
Oct 26, 2024
Oct 26, 2024
Oct 26, 2024
Oct 25, 2024
Oct 25, 2024
Oct 21, 2024
Sep 18, 2024
Sep 4, 2024
Sep 4, 2024
Oct 26, 2024
Oct 24, 2024
Sep 6, 2024
Sep 6, 2024
Sep 6, 2024
Oct 20, 2024

Repository files navigation

lua_rust

crates.io docs.rs

lua syntax parser & runtime interpreter in Rust

  • LALR(1), GLR parser
  • syntax referenced from lua 5.4 reference manual
  • 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 Library

add lua_ir crate to your Cargo.toml

[dependencies]
lua_ir = "..."
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() )?;

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 published.

About

lua syntax parser & interpreter in Rust

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published