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]
name = "scryer-prolog"
version = "0.8.68"
version = "0.8.69"
authors = ["Mark Thom <markjordanthom@gmail.com>"]
repository = "https://github.com/mthom/scryer-prolog"
description = "A modern Prolog implementation written mostly in Rust."
@@ -14,7 +14,7 @@ cfg-if = "0.1.7"
downcast = "0.10.0"
num = "0.2"
ordered-float = "0.5.0"
prolog_parser = "0.8.21"
prolog_parser = "0.8.22"
readline_rs_compat = { version = "0.1.9", optional = true }
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())
match ct.name().as_str() {
"|" => {
self.format_bar_separator_op_with_space(ct.name(), spec);
self.format_bar_separator_op(ct.name(), spec);
return;
},
_ => {}
@@ -487,7 +487,7 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
for _ in 0 .. arity {
self.state_stack.push(TokenOrRedirect::FunctorRedirect);
self.state_stack.push(TokenOrRedirect::Comma);
}
}
self.state_stack.pop();
self.state_stack.push(TokenOrRedirect::Open);
@@ -504,7 +504,7 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
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 right_directed_op = DirectedOp::Right(name.clone(), spec.clone());
@@ -609,7 +609,7 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
if reps > 0 {
self.cyclic_terms.insert(addr, reps - 1);
iter.next()
} else {
} else {
push_space_if_amb!(self, "...", {
self.append_str("...");
});
@@ -786,7 +786,7 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
self.push_list();
}
} else if s.is_expandable() {
if !self.at_cdr(" | _") {
if !self.at_cdr("|_") {
self.push_char('_');
}
} else if !self.at_cdr("") {
@@ -902,8 +902,8 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
fn at_cdr(&mut self, tr: &str) -> bool {
let len = self.outputter.len();
if self.outputter.ends_with(" | ") {
self.outputter.truncate(len - " | ".len());
if self.outputter.ends_with("|") {
self.outputter.truncate(len - "|".len());
self.append_str(tr);
true
@@ -933,7 +933,7 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
TokenOrRedirect::Open =>
self.push_char('('),
TokenOrRedirect::OpenList(delimit) =>
if !self.at_cdr(", ") {
if !self.at_cdr(",") {
self.push_char('[');
} else {
delimit.set(false);
@@ -943,9 +943,9 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
self.push_char(']');
},
TokenOrRedirect::HeadTailSeparator =>
self.append_str(" | "),
self.append_str("|"),
TokenOrRedirect::Comma =>
self.append_str(", "),
self.append_str(","),
TokenOrRedirect::Space =>
self.push_char(' '),
TokenOrRedirect::LeftCurly =>

File diff suppressed because it is too large Load Diff