}
}
+ #[inline]
+ fn is_prefix(&self )-> bool {
+ match self {
+ &DirectedOp::Left(_name, cell) | &DirectedOp::Right(_name, cell) => {
+ is_prefix!(cell.get_spec() as u32)
+ }
+ }
+ }
+
#[inline]
fn is_negative_sign(&self) -> bool {
match self {
self.iter.pop_stack();
self.state_stack.push(TokenOrRedirect::Atom(atom!("...")));
- self.state_stack.push(TokenOrRedirect::Space);
self.state_stack.push(TokenOrRedirect::Atom(name));
return;
let op = DirectedOp::Left(name, spec);
self.state_stack.push(TokenOrRedirect::CompositeRedirect(max_depth, op));
- self.state_stack.push(TokenOrRedirect::Space);
+
+ /*
+ if fetch_op_spec(name, 2, self.op_dir).is_some() {
+ self.state_stack.push(TokenOrRedirect::Space);
+ }
+ */
+
self.state_stack.push(TokenOrRedirect::Atom(name));
} else {
match name.as_str() {
}
fn print_number(&mut self, max_depth: usize, n: NumberFocus, op: &Option<DirectedOp>) {
- let add_brackets = if let Some(op) = op {
- op.is_negative_sign() && !n.is_negative()
+ let (add_brackets, op_is_prefix) = if let Some(op) = op {
+ (op.is_negative_sign() && !n.is_negative(), op.is_prefix())
} else {
- false
+ (false, false)
};
if add_brackets {
+ if op_is_prefix && !self.outputter.ends_with(" ") {
+ push_char!(self, ' ');
+ }
+
push_char!(self, '(');
}
if let Some(ref op) = &op {
if !self.outputter.ends_with(" ") {
- if op.is_left() && requires_space(op.as_atom().as_str(), "(") {
- self.state_stack.push(TokenOrRedirect::Space);
+ if op.is_left() {
+ if op.is_prefix() || requires_space(op.as_atom().as_str(), "(") {
+ self.state_stack.push(TokenOrRedirect::Space);
+ }
}
}
}
let mut result = String::new();
if let Some(ref op) = op {
- if printer.outputter.ends_with(&format!(" {}", op.as_atom().as_str())) {
+ let op_is_prefix = op.is_prefix() && op.is_left();
+
+ if op_is_prefix || printer.outputter.ends_with(&format!(" {}", op.as_atom().as_str())) {
result.push(' ');
}
Chars == "- (1*2)".
test_140 :- writeq_term_to_chars(-a, Chars),
- Chars == "- a".
+ Chars == "-a".
test_184 :- writeq_term_to_chars(-(-), Chars),
Chars == "- (-)".
test_185 :- writeq_term_to_chars(-[-], Chars),
- Chars == "- [-]".
+ Chars == "-[-]".
test_188 :- writeq_term_to_chars(-p(c), Chars),
- Chars == "- p(c)".
+ Chars == "-p(c)".
test_189 :- writeq_term_to_chars(-{}, Chars),
- Chars == "- {}".
+ Chars == "-{}".
test_190 :- writeq_term_to_chars(-{a}, Chars),
- Chars == "- {a}".
+ Chars == "-{a}".
test_191 :- writeq_term_to_chars(-(-a), Chars),
- Chars == "- - a".
+ Chars == "- -a".
test_192 :- writeq_term_to_chars(-(-(-a)), Chars),
- Chars == "- - - a".
+ Chars == "- - -a".
-test_216 :- writeq_term_to_chars(-(-1), Chars),
- Chars == "- -1".
+test_216 :- writeq_term_to_chars(-(-(1)), Chars),
+ Chars == "- - (1)".
test_215_248_249 :-
setup_call_cleanup(op(100,yfx,~),
test_278 :- setup_call_cleanup(op(9,xfy,.),
( writeq_term_to_chars(-[1], Chars),
- Chars == "- [1]"
+ Chars == "-[1]"
),
op(0,xfy,.)).
test_279_296 :-
setup_call_cleanup(op(9,xf,'$VAR'),
( writeq_term_to_chars(-'$VAR'(0), Chars0),
- Chars0 == "- A",
+ Chars0 == "-A",
writeq_term_to_chars('$VAR'(0), Chars1),
Chars1 == "A"
),
op(P,fy,+)).
test_257 :- writeq_term_to_chars([+{a},+[]], Chars),
- Chars == "[+ {a},+ []]".
+ Chars == "[+{a},+[]]".
test_68 :- [(:-)|(:-)]=[:-|:-].
C0 == "' op' '1 '",
read_from_chars("' op'[].", T1),
writeq_term_to_chars(T1, C1),
- C1 == "' op' []"
+ C1 == "' op'[]"
),
op(0, fx, ' op')
).
C1 == "[1]",
read_from_chars("-[1].", T2),
writeq_term_to_chars(T2, C2),
- C2 == "- [1]",
+ C2 == "-[1]",
read_from_chars("X = 1.e.", T3),
writeq_term_to_chars(T3, C3),
C3 == "A=[1|e]",
setup_call_cleanup(op(20,fx,--),
( read_from_chars("--(a).", T0),
writeq_term_to_chars(T0, C0),
- C0 == "-- a",
+ C0 == "--a",
op(0,fx,--),
read_from_chars("--(a).", T1),
writeq_term_to_chars(T1, C1),