Skip to main content

variable_core/
lib.rs

1pub mod ast;
2pub mod lexer;
3pub mod parser;
4pub mod validate;
5
6use ast::VarFile;
7use lexer::LexError;
8use parser::ParseError;
9use validate::ValidationError;
10
11#[derive(Debug)]
12pub enum Error {
13    Lex(LexError),
14    Parse(ParseError),
15    Validation(Vec<ValidationError>),
16}
17
18pub fn parse_and_validate(source: &str) -> Result<VarFile, Error> {
19    let tokens = lexer::lex(source).map_err(Error::Lex)?;
20    let var_file = parser::parse(tokens).map_err(Error::Parse)?;
21    validate::validate(&var_file).map_err(Error::Validation)?;
22    Ok(var_file)
23}