use prolog::iterators::*;
use prolog::machine::*;
use prolog::machine::machine_state::MachineState;
-use prolog::toplevel::*;
use std::collections::VecDeque;
use std::io::{Read, stdin};
println!("(type Enter + Ctrl-D to terminate the stream when finished)");
Ok(Input::Batch)
},
- _ => Ok(Input::Term(parse_term(wam, buffer.as_bytes())?))
+ _ => {
+ let mut parser = Parser::new(stdin.lock(), wam.atom_tbl(), wam.machine_flags());
+ parser.add_to_top(buffer.as_str());
+
+ Ok(Input::Term(parser.read_term(composite_op!(&wam.op_dir))?))
+ }
}
}
}
}
-// used to parse queries. mostly.
-pub fn parse_term<R: Read>(wam: &Machine, buf: R) -> Result<Term, ParserError>
-{
- let mut parser = Parser::new(buf, wam.atom_tbl(), wam.machine_flags());
- parser.read_term(composite_op!(&wam.op_dir))
-}
-
pub
fn consume_term<'a>(static_code_dir: Rc<RefCell<CodeDir>>, term: Term,
mut indices: MachineCodeIndices<'a>)