mod debug;
mod dialect;
mod error;
mod options;
mod raw;
mod reader;
pub use debug::dump_parser;
pub use dialect::lua51::*;
pub use dialect::lua52::*;
pub use dialect::lua53::*;
pub use dialect::lua54::*;
pub use dialect::lua55::*;
pub use dialect::luajit::*;
pub use dialect::luau::*;
pub use error::ParseError;
pub use options::{ParseMode, ParseOptions, StringDecodeMode, StringEncoding};
pub use raw::*;
use dialect::lua51::Lua51Parser;
use dialect::lua52::Lua52Parser;
use dialect::lua53::Lua53Parser;
use dialect::lua54::Lua54Parser;
use dialect::lua55::Lua55Parser;
use dialect::luajit::LuaJitParser;
use dialect::luau::LuauParser;
use crate::decompile::{DecompileContext, DecompileDialect, DecompileError, DecompileState};
pub(crate) fn parse_input(
state: &mut DecompileState,
context: &DecompileContext<'_>,
) -> Result<(), DecompileError> {
state.raw_chunk = Some(parse_chunk_with_dialect(
context.options.dialect,
context.bytes,
context.options.parse,
)?);
Ok(())
}
pub fn parse_chunk_with_dialect(
dialect: DecompileDialect,
bytes: &[u8],
options: ParseOptions,
) -> Result<RawChunk, ParseError> {
match dialect {
DecompileDialect::Lua51 => Lua51Parser::new(options).parse(bytes),
DecompileDialect::Lua52 => Lua52Parser::new(options).parse(bytes),
DecompileDialect::Lua53 => Lua53Parser::new(options).parse(bytes),
DecompileDialect::Lua54 => Lua54Parser::new(options).parse(bytes),
DecompileDialect::Lua55 => Lua55Parser::new(options).parse(bytes),
DecompileDialect::Luajit => LuaJitParser::new(options).parse(bytes),
DecompileDialect::Luau => LuauParser::new(options).parse(bytes),
}
}