read from streams.

This commit is contained in:
Mark Thom
2019-04-13 18:40:17 -06:00
parent ed17867be0
commit ae90554378
25 changed files with 1657 additions and 1318 deletions

View File

@@ -14,59 +14,16 @@ extern crate termion;
mod prolog;
use prolog::machine::*;
use prolog::machine::compile::*;
use prolog::machine::machine_errors::*;
use prolog::machine::toplevel::string_to_toplevel;
use prolog::read::*;
use prolog::write::*;
#[cfg(test)]
mod tests;
fn prolog_repl() {
let mut wam = Machine::new();
loop {
#[cfg(feature = "readline_rs_compat")]
readline::set_line_mode(readline::LineMode::Single);
match toplevel_read_line() {
Ok(Input::TermString(buffer)) => {
let result = match string_to_toplevel(buffer.as_bytes(), &mut wam) {
Ok(packet) => compile_term(&mut wam, packet),
Err(e) => EvalSession::from(e)
};
print(&mut wam, result)
},
Ok(Input::Batch) => {
#[cfg(feature = "readline_rs_compat")]
readline::set_line_mode(readline::LineMode::Multi);
let src = match readline::read_batch("") {
Ok(src) => src,
Err(e) => {
println!("{}", e);
continue;
}
};
let result = compile_user_module(&mut wam, &src[0 ..]);
print(&mut wam, result);
},
Ok(Input::Clear) => {
wam.clear();
continue;
},
Err(e) => print(&mut wam, EvalSession::from(e))
};
wam.reset();
}
}
fn main() {
#[cfg(feature = "readline_rs_compat")]
readline::readline_initialize();
prolog_repl();
let mut wam = Machine::new(readline::input_stream());
wam.run_toplevel();
}