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}