fix faulty tidy_trail

This commit is contained in:
Mark Thom
2018-11-15 23:04:52 -07:00
parent 81f4128bc6
commit 6e20f82d6f
2 changed files with 7 additions and 5 deletions

View File

@@ -6,7 +6,7 @@
:- op(1200, xfx, -->). :- op(1200, xfx, -->).
phrase(G, G) :- phrase(G, G) :-
nonvar(G), G = [_|_], !. %, append(G, _, Ls0). nonvar(G), G = [_|_], !.
phrase(G, Ls0) :- phrase(G, Ls0) :-
nonvar(G), G = (G1, G2), !, phrase(G1, Ls0, Ls1), phrase(G2, Ls1, []). nonvar(G), G = (G1, G2), !, phrase(G1, Ls0, Ls1), phrase(G2, Ls1, []).
phrase(G, Ls0) :- phrase(G, Ls0) :-
@@ -50,7 +50,7 @@ expand_body(Term0, (ModTerm, ModTerms), N0, N) :-
nonvar(Term), nonvar(Term),
expand_body_term(Term, ModTerm, N0, N1), expand_body_term(Term, ModTerm, N0, N1),
expand_body(Terms, ModTerms, N1, N). expand_body(Terms, ModTerms, N1, N).
expand_body(Term0, ModTerm, N0, N) :- expand_body(Term0, ModTerm, N0, N) :-
nonvar(Term0), nonvar(Term0),
expand_body_term(Term0, ModTerm, N0, N). expand_body_term(Term0, ModTerm, N0, N).

View File

@@ -32,7 +32,7 @@ macro_rules! try_or_fail {
impl MachineState { impl MachineState {
pub(super) fn new() -> Self { pub(super) fn new() -> Self {
MachineState { MachineState {
s: 0, s: 0,
p: CodePtr::default(), p: CodePtr::default(),
b: 0, b: 0,
@@ -132,10 +132,10 @@ impl MachineState {
output.append(" = "); output.append(" = ");
let mut printer = HCPrinter::from_heap_locs(&self, output, var_dir); let mut printer = HCPrinter::from_heap_locs(&self, output, var_dir);
printer.numbervars = false; printer.numbervars = false;
printer.quoted = true; printer.quoted = true;
let mut output = printer.print(addr); let mut output = printer.print(addr);
let bad_ending = format!("= {}", &var); let bad_ending = format!("= {}", &var);
@@ -428,6 +428,7 @@ impl MachineState {
let tr = self.tr; let tr = self.tr;
let val = self.trail[tr - 1]; let val = self.trail[tr - 1];
self.trail[i] = val; self.trail[i] = val;
self.trail.pop();
self.tr -= 1; self.tr -= 1;
}, },
Ref::StackCell(fr, _) => { Ref::StackCell(fr, _) => {
@@ -445,6 +446,7 @@ impl MachineState {
let tr = self.tr; let tr = self.tr;
let val = self.trail[tr - 1]; let val = self.trail[tr - 1];
self.trail[i] = val; self.trail[i] = val;
self.trail.pop();
self.tr -= 1; self.tr -= 1;
} }
} }