@@ -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"
|
||||||
|
|
||||||
|
|||||||
@@ -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 =>
|
||||||
|
|||||||
898
src/tests.rs
898
src/tests.rs
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user