if let &mut Line::Control(ref mut ctrl) = body.last_mut().unwrap() {
*ctrl = ControlInstruction::CatchExecute;
},
+ QueryTermRef::Cut => {},
QueryTermRef::Throw(_) =>
if let &mut Line::Control(ref mut ctrl) = body.last_mut().unwrap() {
*ctrl = ControlInstruction::ThrowExecute;
&TopLevel::Predicate(ref clauses) => {
let mut cg = CodeGenerator::<DebrayAllocator>::new();
- let compiled_pred = cg.compile_predicate(clauses);
+ let compiled_pred = cg.compile_predicate(clauses);
wam.add_predicate(clauses, compiled_pred)
},
&TopLevel::Fact(ref fact) => {
tr: usize,
hb: usize,
block: usize, // an offset into the OR stack.
- ball: (usize, Heap) // heap boundary, and a term copy
+ ball: (usize, Heap) // heap boundary, and a term copy
}
struct DuplicateTerm<'a> {
static ref ERR_STRING: String = String::from("an operator can't be both \
infix and postfix.");
}
-
+
if is_infix!(spec) {
match self.op_dir.get(&(name.clone(), Fixity::Post)) {
Some(_) => return EvalSession::EntryFailure(ERR_STRING.clone()),
}
}
}
-
+
pub fn submit_query<'a>(&mut self, code: Code, alloc_locs: AllocVarDict<'a>) -> EvalSession<'a>
{
let mut heap_locs = HashMap::new();
}
if let &Terminal::Terminal = term {
- self.p = CodePtr::default();
+ self.p = self.cp;
} else {
self.p += 1;
}
}
if let &Terminal::Terminal = term {
- self.p = CodePtr::default();
+ self.p = self.cp;
} else {
self.p += 1;
}