lisp-8bit/src/main.rs

48 lines
922 B
Rust
Raw Normal View History

2024-09-09 01:08:04 +02:00
// mod assembler;
2025-09-08 16:04:31 +02:00
mod code_gen;
mod ir;
2024-09-09 01:08:04 +02:00
mod lexer;
2025-09-08 16:04:31 +02:00
mod parser;
2024-08-08 21:53:27 +02:00
mod error;
2024-09-09 01:08:04 +02:00
use color_eyre::eyre::Result;
// pub use error::*;
2025-09-08 16:04:31 +02:00
use ir::IRepr;
2024-09-09 01:08:04 +02:00
use lexer::TokenString;
2025-09-08 16:04:31 +02:00
use parser::SExpression;
use crate::{
code_gen::{EightBitLang, GenerateCode, Scope},
ir::generate_code,
};
2024-08-08 21:53:27 +02:00
2024-09-09 01:08:04 +02:00
fn main() -> Result<()> {
// let code = "(+ 1 (+ 5 5))".to_string();
color_eyre::install()?;
2024-08-08 21:53:27 +02:00
2025-09-08 16:04:31 +02:00
// let code = r#"(mul 2 (add 3 4))"#.to_string();
2024-09-09 01:08:04 +02:00
2025-09-08 16:04:31 +02:00
// let code = "(add 3 4) (add 1 2)";
let code = "(let ((a 3)) (out (add 1 a)) (out (add 2 a)))";
2024-09-09 01:08:04 +02:00
2025-09-08 16:04:31 +02:00
let lexed: TokenString = dbg!((code.parse())?);
2024-09-09 01:08:04 +02:00
2025-09-08 16:04:31 +02:00
let parsed: Vec<SExpression> = (lexed.try_into())?;
println!("{parsed:?}");
let code: IRepr = generate_code(parsed)?;
2024-09-09 01:08:04 +02:00
2025-09-08 16:04:31 +02:00
// let code: EightBitLang = code.to_code(&mut Scope::new())?;
dbg!(code);
2024-09-09 01:08:04 +02:00
/*
2024-08-11 04:25:14 +02:00
for byte in assembled {
print!("{byte:#X}, ");
}
2024-09-09 01:08:04 +02:00
println!(""); */
2025-09-08 16:04:31 +02:00
Ok(())
2024-08-08 21:53:27 +02:00
}