1pub mod models;
2pub mod structs;
3pub mod errors;
4
5use std::collections::HashMap;
6
7use structs::{tokenizer::Tokenizer, validator::Validator};
8use models::{program::Program, instruction::Instruction, args::Cli};
9use errors::error::SicompilerError;
10
11pub fn run(cli: &Cli) -> Result<(), SicompilerError> {
22 let tokenizer: Tokenizer = Tokenizer::new(&cli.input_path, &cli.repertoire_path);
23
24 let repertoire: HashMap<String, Instruction> = tokenizer.tokenize_repertoire()?;
25
26 let tokens: Program = tokenizer.tokenize()?;
27
28 let validator: Validator = Validator::new(tokens, &cli.output_path);
29
30 validator.validate(&repertoire)?;
31
32 Ok(())
33}