35 lines
921 B
Rust
35 lines
921 B
Rust
use rustyline::error::ReadlineError;
|
|
use rustyline::{DefaultEditor, Result};
|
|
|
|
use nixjit::*;
|
|
|
|
fn main() -> Result<()> {
|
|
let mut rl = DefaultEditor::new()?;
|
|
loop {
|
|
let readline = rl.readline("nixjit-repl> ");
|
|
match readline {
|
|
Ok(expr) => {
|
|
if expr.trim().is_empty() {
|
|
continue;
|
|
}
|
|
let prog = compile(expr.as_str()).unwrap();
|
|
println!("{}", run(prog).unwrap());
|
|
rl.add_history_entry(expr.as_str())?;
|
|
}
|
|
Err(ReadlineError::Interrupted) => {
|
|
println!("CTRL-C");
|
|
break;
|
|
}
|
|
Err(ReadlineError::Eof) => {
|
|
println!("CTRL-D");
|
|
break;
|
|
}
|
|
Err(err) => {
|
|
println!("Error: {:?}", err);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
Ok(())
|
|
}
|