lisp-8bit/src/main.rs
2025-09-08 16:47:18 +02:00

49 lines
882 B
Rust

// 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<SExpression> = (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(())
}