re: conformity test #181

This commit is contained in:
Mark Thom
2019-04-07 11:44:56 -06:00
parent 0579ad6cfa
commit 6308aa7a1e
2 changed files with 22 additions and 2 deletions

View File

@@ -1,6 +1,6 @@
[package]
name = "scryer-prolog"
version = "0.8.47"
version = "0.8.48"
authors = ["Mark Thom <markjordanthom@gmail.com>"]
repository = "https://github.com/mthom/scryer-prolog"
description = "A modern Prolog implementation written mostly in Rust."

View File

@@ -414,7 +414,7 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
"-" | "\\" => {
self.format_prefix_op_with_space(ct.name(), spec);
return;
},
}
_ => {}
};
@@ -423,6 +423,14 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
self.state_stack.push(TokenOrRedirect::CompositeRedirect(left_directed_op));
self.state_stack.push(TokenOrRedirect::Op(ct.name(), spec));
} else { // if is_infix!(spec.assoc())
match ct.name().as_str() {
"|" => {
self.format_infix_op_with_space(ct.name(), spec);
return;
},
_ => {}
};
let left_directed_op = DirectedOp::Left(ct.name(), spec.clone());
let right_directed_op = DirectedOp::Right(ct.name(), spec.clone());
@@ -456,6 +464,18 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
self.state_stack.push(TokenOrRedirect::Atom(name));
}
fn format_infix_op_with_space(&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());
self.state_stack.push(TokenOrRedirect::CompositeRedirect(left_directed_op));
self.state_stack.push(TokenOrRedirect::Space);
self.state_stack.push(TokenOrRedirect::Op(name.clone(), spec));
self.state_stack.push(TokenOrRedirect::Space);
self.state_stack.push(TokenOrRedirect::CompositeRedirect(right_directed_op));
}
fn format_curly_braces(&mut self)
{
self.state_stack.push(TokenOrRedirect::RightCurly);