use std::{ fs::{self}, io::{self, Write}, path::Path, }; use tracing::error; pub mod cli; pub mod keywords; pub mod scanner; pub mod token; pub mod tokenizer { pub mod comment; pub mod identifier; pub mod interface; pub mod lookahead; pub mod newline; pub mod number; pub mod single_char; pub mod string; pub mod whitespace; } pub fn compile(source: &Path) -> Result<(), io::Error> { let input = fs::read_to_string(source)?; let _tokens = scanner::tokenize(&input); Ok(()) } pub fn repl() { loop { print!("> "); let _ = io::stdout().flush(); let mut input = String::new(); match io::stdin().read_line(&mut input) { Ok(_) => {} Err(e) => error!("{}", e), } let input = input.trim().to_string(); let _tokens = scanner::tokenize(&input); } }