22 lines
531 B
Rust
22 lines
531 B
Rust
mod lisp;
|
|
mod parser;
|
|
use lisp::eval_prelude;
|
|
use parser::ExpressionStream;
|
|
|
|
fn main() {
|
|
let program = "((lambda (x y) (add (if (lt x 10) (add x 10) x) y)) 2 20)";
|
|
|
|
for r in ExpressionStream::from_char_stream(program.chars()) {
|
|
match r {
|
|
Err(err) => println!("ParserError: {:?}", err),
|
|
Ok(expr) => println!(
|
|
"{:?} \n vvvvvvvvvvv \n {:?}\n",
|
|
expr.clone(),
|
|
eval_prelude(expr)
|
|
),
|
|
}
|
|
}
|
|
|
|
println!("Interpreter Done!");
|
|
}
|