1use envl_utils::{
2 error::EnvlError,
3 types::{FilePosition, Position},
4};
5
6use crate::{lexer::Lexer, misc::config::Config, parser::Parser};
7
8pub mod lexer;
9pub mod misc;
10pub mod parser;
11pub mod test;
12
13pub fn generate_ast(file_path: String, code: String) -> Result<Config, EnvlError> {
14 let lex = Lexer::new(file_path.clone(), code);
15 let (tokens, file_end_pos) = lex.generate();
16 let parser = Parser::new(
17 Position {
18 file_path,
19 start: FilePosition { col: 1, row: 1 },
20 end: file_end_pos,
21 },
22 tokens,
23 );
24 parser.parse()
25}