// mod assembler; mod code_gen; mod ir; mod lexer; mod parser; mod error; use color_eyre::eyre::Result; // pub use error::*; use crate::{ code_gen::Code, lexer::TokenString, parser::SExpression, ir::generate_code, }; fn main() -> Result<()> { // let code = "(+ 1 (+ 5 5))".to_string(); color_eyre::install()?; // let code = r#"(mul 2 (add 3 4))"#.to_string(); let code = "(add 3 4) (add 1 2)"; // let code = "(let ((a 3)) (out (add 1 a)) (out (add 2 a)))"; let lexed: TokenString = code.parse()?; let parsed: Vec = (lexed.try_into())?; for instruction in parsed.clone() { println!("{instruction}"); } let code = generate_code(parsed)?; let code: Code = code.into(); dbg!(code); /* for byte in assembled { print!("{byte:#X}, "); } println!(""); */ Ok(()) }