envuse_parser/envuse/
create_program.rs1use super::super::parser::ast::AST;
2use super::super::parser::tokenizer::Tokenizer;
3use super::display_program_error::display_program_error;
4use super::program::Program;
5
6pub fn create_program<T: ToString>(
7 source: T,
8 location: Option<T>,
9) -> Result<Program, Box<dyn std::error::Error>> {
10 let location_val = location.map(|t| t.to_string());
11
12 let result_program: Result<Program, Box<dyn std::error::Error>> = try {
13 Program {
14 location: location_val.clone(),
15 source: source.to_string(),
16 ast: AST::parse(Tokenizer::parse(source.to_string())?)?,
17 }
18 };
19
20 display_program_error(result_program, source, location_val)
21}