From 6e20f82d6fbff17608eea313784bb3666cecfed4 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Thu, 15 Nov 2018 23:04:52 -0700 Subject: [PATCH] fix faulty tidy_trail --- src/prolog/lib/dcgs.pl | 4 ++-- src/prolog/machine/machine_state_impl.rs | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/prolog/lib/dcgs.pl b/src/prolog/lib/dcgs.pl index e3ac00a0..d92e6d2b 100644 --- a/src/prolog/lib/dcgs.pl +++ b/src/prolog/lib/dcgs.pl @@ -6,7 +6,7 @@ :- op(1200, xfx, -->). phrase(G, G) :- - nonvar(G), G = [_|_], !. %, append(G, _, Ls0). + nonvar(G), G = [_|_], !. phrase(G, Ls0) :- nonvar(G), G = (G1, G2), !, phrase(G1, Ls0, Ls1), phrase(G2, Ls1, []). phrase(G, Ls0) :- @@ -50,7 +50,7 @@ expand_body(Term0, (ModTerm, ModTerms), N0, N) :- nonvar(Term), expand_body_term(Term, ModTerm, N0, N1), expand_body(Terms, ModTerms, N1, N). -expand_body(Term0, ModTerm, N0, N) :- +expand_body(Term0, ModTerm, N0, N) :- nonvar(Term0), expand_body_term(Term0, ModTerm, N0, N). diff --git a/src/prolog/machine/machine_state_impl.rs b/src/prolog/machine/machine_state_impl.rs index 851e9800..d479d2e0 100644 --- a/src/prolog/machine/machine_state_impl.rs +++ b/src/prolog/machine/machine_state_impl.rs @@ -32,7 +32,7 @@ macro_rules! try_or_fail { impl MachineState { pub(super) fn new() -> Self { - MachineState { + MachineState { s: 0, p: CodePtr::default(), b: 0, @@ -132,10 +132,10 @@ impl MachineState { output.append(" = "); let mut printer = HCPrinter::from_heap_locs(&self, output, var_dir); - + printer.numbervars = false; printer.quoted = true; - + let mut output = printer.print(addr); let bad_ending = format!("= {}", &var); @@ -428,6 +428,7 @@ impl MachineState { let tr = self.tr; let val = self.trail[tr - 1]; self.trail[i] = val; + self.trail.pop(); self.tr -= 1; }, Ref::StackCell(fr, _) => { @@ -445,6 +446,7 @@ impl MachineState { let tr = self.tr; let val = self.trail[tr - 1]; self.trail[i] = val; + self.trail.pop(); self.tr -= 1; } } -- 2.54.0