dot: quote identifiers containing a minus
* spot/twaalgos/dot.cc: Quote identifiers containing a minus. * tests/core/alternating.test: Add test case. * NEWS: Mention the bug.
This commit is contained in:
parent
166a26417c
commit
b4279d3a12
3 changed files with 64 additions and 5 deletions
4
NEWS
4
NEWS
|
|
@ -120,6 +120,10 @@ New in spot 2.10.6.dev (not yet released)
|
|||
into the universal edge vector, since the later can be
|
||||
reallocated during that process.
|
||||
|
||||
- Printing an alternating automaton with print_dot() using 'u' to
|
||||
hide true state could produce some incorrect GraphViz output if
|
||||
the automaton as a true state as part of a universal group.
|
||||
|
||||
New in spot 2.10.6 (2022-05-18)
|
||||
|
||||
Bugs fixed:
|
||||
|
|
|
|||
|
|
@ -578,10 +578,27 @@ namespace spot
|
|||
return tmp_dst.str();
|
||||
}
|
||||
|
||||
template<typename U, typename V>
|
||||
void print_true_state(U to, V from) const
|
||||
void print_hidden_true_name(unsigned to, unsigned from) const
|
||||
{
|
||||
os_ << " T" << to << 'T' << from << " [label=\"\", style=invis, ";
|
||||
os_ << 'T' << to << 'T' << from;
|
||||
}
|
||||
|
||||
void print_hidden_true_name(unsigned to, const std::string& from) const
|
||||
{
|
||||
bool neg = from[0] == '-';
|
||||
if (neg)
|
||||
os_ << '"';
|
||||
os_ << 'T' << to << 'T' << from;
|
||||
if (neg)
|
||||
os_ << '"';
|
||||
}
|
||||
|
||||
template <typename F>
|
||||
void print_true_state(unsigned to, F from) const
|
||||
{
|
||||
os_ << " ";
|
||||
print_hidden_true_name(to, from);
|
||||
os_ << " [label=\"\", style=invis, ";
|
||||
os_ << (opt_vertical_ ? "height=0]\n" : "width=0]\n");
|
||||
}
|
||||
|
||||
|
|
@ -606,7 +623,7 @@ namespace spot
|
|||
print_true_state(d, dest);
|
||||
os_ << " " << dest << " -> ";
|
||||
if (dst_is_hidden_true_state)
|
||||
os_ << 'T' << d << 'T' << dest;
|
||||
print_hidden_true_name(d, dest);
|
||||
else
|
||||
os_ << d;
|
||||
if ((style && *style) || opt_id_)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/sh
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright (C) 2016-2018, 2020-2021 Laboratoire de Recherche et
|
||||
# Copyright (C) 2016-2018, 2020-2022 Laboratoire de Recherche et
|
||||
# Développement de l'Epita (LRDE).
|
||||
#
|
||||
# This file is part of Spot, a model checking library.
|
||||
|
|
@ -1009,3 +1009,41 @@ test '2_0_1_1_1_1_3_3' = "`autfilt --stats=$stats in`"
|
|||
|
||||
autfilt --stats='%[x]U' in 2>stderr && exit2
|
||||
grep '%\[x\]U' stderr
|
||||
|
||||
cat >in <<EOF
|
||||
HOA: v1
|
||||
States: 2
|
||||
Start: 1
|
||||
AP: 1 "a"
|
||||
acc-name: co-Buchi
|
||||
Acceptance: 1 Fin(0)
|
||||
properties: trans-labels explicit-labels trans-acc complete univ-branch
|
||||
--BODY--
|
||||
State: 0
|
||||
[t] 0
|
||||
State: 1
|
||||
[t] 0&1 {0}
|
||||
[0] 0
|
||||
--END--
|
||||
EOF
|
||||
autfilt -du in >out.dot
|
||||
# T0T-1 is not a valid name for GraphViz, it has to be quoted.
|
||||
cat >exp.dot <<EOF
|
||||
digraph "" {
|
||||
rankdir=LR
|
||||
label="Fin(0)\n[co-Büchi]"
|
||||
labelloc="t"
|
||||
node [shape="circle"]
|
||||
I [label="", style=invis, width=0]
|
||||
I -> 1
|
||||
1 [label="1"]
|
||||
1 -> -1 [label="1\n{0}", arrowhead=onormal]
|
||||
-1 [label=<>,shape=point,width=0.05,height=0.05]
|
||||
"T0T-1" [label="", style=invis, width=0]
|
||||
-1 -> "T0T-1"
|
||||
-1 -> 1
|
||||
T0T1 [label="", style=invis, width=0]
|
||||
1 -> T0T1 [label="a"]
|
||||
}
|
||||
EOF
|
||||
diff out.dot exp.dot
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue