1
1
Fork 0
mirror of https://github.com/azur1s/bobbylisp.git synced 2024-09-28 13:17:39 +00:00
bobbylisp/src/main.rs

40 lines
1,019 B
Rust
Raw Normal View History

2022-01-21 23:43:50 +00:00
use std::{fs::read_to_string, env::args, path::Path};
mod token;
mod util;
mod lexer;
mod parser;
mod compiler;
2022-01-21 23:43:50 +00:00
fn main() {
let args = args().nth(1).expect("No input file");
let src = util::cover_paren(read_to_string(&args).unwrap());
let _file_name = Path::new(&args).file_stem().unwrap().to_str().unwrap();
let tokens = lexer::lexer(&src);
if tokens.is_err() {
2022-01-22 21:36:13 +00:00
eprintln!("{}", tokens.unwrap_err());
return;
2022-01-21 23:43:50 +00:00
} else {
2022-01-22 21:36:13 +00:00
// for t in tokens.as_ref().unwrap() {
// println!("{:?}", t);
// }
let ast = parser::parse(tokens.unwrap(), &args);
if ast.is_err() {
eprintln!("{}", ast.as_ref().unwrap_err());
return;
} else {
let c = parser::translate_expr(ast.unwrap());
match c {
Ok(e) => {
println!("{:#?}", e);
}
Err(e) => {
eprintln!("{}", e);
}
}
2022-01-21 23:53:56 +00:00
}
2022-01-21 23:43:50 +00:00
}
}