Skip to main content

lunar_lang/lua/
loader.rs

1use purua::parser::{ast, parser, stream::TokenStream};
2
3#[derive(Debug)]
4pub struct LuaProgram {
5    pub block: ast::Block,
6}
7
8pub fn load_file(path: &str) -> Result<LuaProgram, Box<dyn std::error::Error>> {
9    let source = std::fs::read_to_string(path)?;
10    load_string(source.as_str())
11}
12
13pub fn load_string(source: &str) -> Result<LuaProgram, Box<dyn std::error::Error>> {
14    let mut scanner = purua::scanner::Scanner::new(source);
15    scanner.scan()?;
16    let token_stream = TokenStream::new(scanner.tokens);
17    let block = parser::parse(token_stream)?;
18    Ok(LuaProgram { block })
19}