address issues #121 - #123

This commit is contained in:
Mark Thom
2019-04-27 21:51:48 -06:00
parent 531d8b3352
commit 9b21e04539
3 changed files with 460 additions and 462 deletions

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "scryer-prolog" name = "scryer-prolog"
version = "0.8.68" version = "0.8.69"
authors = ["Mark Thom <markjordanthom@gmail.com>"] authors = ["Mark Thom <markjordanthom@gmail.com>"]
repository = "https://github.com/mthom/scryer-prolog" repository = "https://github.com/mthom/scryer-prolog"
description = "A modern Prolog implementation written mostly in Rust." description = "A modern Prolog implementation written mostly in Rust."
@@ -14,7 +14,7 @@ cfg-if = "0.1.7"
downcast = "0.10.0" downcast = "0.10.0"
num = "0.2" num = "0.2"
ordered-float = "0.5.0" ordered-float = "0.5.0"
prolog_parser = "0.8.21" prolog_parser = "0.8.22"
readline_rs_compat = { version = "0.1.9", optional = true } readline_rs_compat = { version = "0.1.9", optional = true }
ref_thread_local = "0.0.0" ref_thread_local = "0.0.0"

View File

@@ -465,7 +465,7 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
} else { // if is_infix!(spec.assoc()) } else { // if is_infix!(spec.assoc())
match ct.name().as_str() { match ct.name().as_str() {
"|" => { "|" => {
self.format_bar_separator_op_with_space(ct.name(), spec); self.format_bar_separator_op(ct.name(), spec);
return; return;
}, },
_ => {} _ => {}
@@ -487,7 +487,7 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
for _ in 0 .. arity { for _ in 0 .. arity {
self.state_stack.push(TokenOrRedirect::FunctorRedirect); self.state_stack.push(TokenOrRedirect::FunctorRedirect);
self.state_stack.push(TokenOrRedirect::Comma); self.state_stack.push(TokenOrRedirect::Comma);
} }
self.state_stack.pop(); self.state_stack.pop();
self.state_stack.push(TokenOrRedirect::Open); self.state_stack.push(TokenOrRedirect::Open);
@@ -504,7 +504,7 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
self.state_stack.push(TokenOrRedirect::Atom(name)); self.state_stack.push(TokenOrRedirect::Atom(name));
} }
fn format_bar_separator_op_with_space(&mut self, name: ClauseName, spec: SharedOpDesc) fn format_bar_separator_op(&mut self, name: ClauseName, spec: SharedOpDesc)
{ {
let left_directed_op = DirectedOp::Left(name.clone(), spec.clone()); let left_directed_op = DirectedOp::Left(name.clone(), spec.clone());
let right_directed_op = DirectedOp::Right(name.clone(), spec.clone()); let right_directed_op = DirectedOp::Right(name.clone(), spec.clone());
@@ -609,7 +609,7 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
if reps > 0 { if reps > 0 {
self.cyclic_terms.insert(addr, reps - 1); self.cyclic_terms.insert(addr, reps - 1);
iter.next() iter.next()
} else { } else {
push_space_if_amb!(self, "...", { push_space_if_amb!(self, "...", {
self.append_str("..."); self.append_str("...");
}); });
@@ -786,7 +786,7 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
self.push_list(); self.push_list();
} }
} else if s.is_expandable() { } else if s.is_expandable() {
if !self.at_cdr(" | _") { if !self.at_cdr("|_") {
self.push_char('_'); self.push_char('_');
} }
} else if !self.at_cdr("") { } else if !self.at_cdr("") {
@@ -902,8 +902,8 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
fn at_cdr(&mut self, tr: &str) -> bool { fn at_cdr(&mut self, tr: &str) -> bool {
let len = self.outputter.len(); let len = self.outputter.len();
if self.outputter.ends_with(" | ") { if self.outputter.ends_with("|") {
self.outputter.truncate(len - " | ".len()); self.outputter.truncate(len - "|".len());
self.append_str(tr); self.append_str(tr);
true true
@@ -933,7 +933,7 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
TokenOrRedirect::Open => TokenOrRedirect::Open =>
self.push_char('('), self.push_char('('),
TokenOrRedirect::OpenList(delimit) => TokenOrRedirect::OpenList(delimit) =>
if !self.at_cdr(", ") { if !self.at_cdr(",") {
self.push_char('['); self.push_char('[');
} else { } else {
delimit.set(false); delimit.set(false);
@@ -943,9 +943,9 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
self.push_char(']'); self.push_char(']');
}, },
TokenOrRedirect::HeadTailSeparator => TokenOrRedirect::HeadTailSeparator =>
self.append_str(" | "), self.append_str("|"),
TokenOrRedirect::Comma => TokenOrRedirect::Comma =>
self.append_str(", "), self.append_str(","),
TokenOrRedirect::Space => TokenOrRedirect::Space =>
self.push_char(' '), self.push_char(' '),
TokenOrRedirect::LeftCurly => TokenOrRedirect::LeftCurly =>

File diff suppressed because it is too large Load Diff