// mod assembler; mod code_gen; mod ir; mod lexer; mod parser; mod error; use color_eyre::eyre::Result; // pub use error::*; use ir::IRepr; use lexer::TokenString; use parser::SExpression; use crate::{ code_gen::{EightBitLang, GenerateCode, Scope}, 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 = dbg!((code.parse())?); let parsed: Vec = (lexed.try_into())?; println!("{parsed:?}"); let code: IRepr = generate_code(parsed)?; // let code: EightBitLang = code.to_code(&mut Scope::new())?; dbg!(code); /* for byte in assembled { print!("{byte:#X}, "); } println!(""); */ Ok(()) }