Escape labels in -KV output.
* src/tgbaalgos/scc.cc (dump_scc_dot): Escape labels and other strings output between quote in dot. * src/tgbatest/kv.test: New file. * src/tgbatest/Makefile.am (TESTS): Add it.
This commit is contained in:
parent
4d8239e855
commit
913637a7ae
4 changed files with 62 additions and 8 deletions
|
|
@ -1,3 +1,12 @@
|
||||||
|
2009-10-16 Alexandre Duret-Lutz <adl@lrde.epita.fr>
|
||||||
|
|
||||||
|
Escape labels in -KV output.
|
||||||
|
|
||||||
|
* src/tgbaalgos/scc.cc (dump_scc_dot): Escape labels and other
|
||||||
|
strings output between quote in dot.
|
||||||
|
* src/tgbatest/kv.test: New file.
|
||||||
|
* src/tgbatest/Makefile.am (TESTS): Add it.
|
||||||
|
|
||||||
2009-10-16 Alexandre Duret-Lutz <adl@lrde.epita.fr>
|
2009-10-16 Alexandre Duret-Lutz <adl@lrde.epita.fr>
|
||||||
|
|
||||||
* src/tgbaalgos/ltl2tgba_fm.cc: Typos.
|
* src/tgbaalgos/ltl2tgba_fm.cc: Typos.
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include "scc.hh"
|
#include "scc.hh"
|
||||||
#include "tgba/bddprint.hh"
|
#include "tgba/bddprint.hh"
|
||||||
|
#include "misc/escape.hh"
|
||||||
|
|
||||||
namespace spot
|
namespace spot
|
||||||
{
|
{
|
||||||
|
|
@ -455,22 +456,24 @@ namespace spot
|
||||||
if (n > 1)
|
if (n > 1)
|
||||||
ostr << "s";
|
ostr << "s";
|
||||||
ostr << ")\\naccs=";
|
ostr << ")\\naccs=";
|
||||||
bdd_print_accset(ostr, m.get_aut()->get_dict(),
|
escape_str(ostr, bdd_format_accset(m.get_aut()->get_dict(),
|
||||||
m.acc_set_of(state));
|
m.acc_set_of(state)));
|
||||||
ostr << "\\nconds=[";
|
ostr << "\\nconds=[";
|
||||||
for (scc_map::cond_set::const_iterator i = cs.begin();
|
for (scc_map::cond_set::const_iterator i = cs.begin();
|
||||||
i != cs.end(); ++i)
|
i != cs.end(); ++i)
|
||||||
{
|
{
|
||||||
if (i != cs.begin())
|
if (i != cs.begin())
|
||||||
ostr << ", ";
|
ostr << ", ";
|
||||||
bdd_print_formula(ostr, m.get_aut()->get_dict(), *i);
|
escape_str(ostr,
|
||||||
|
bdd_format_formula(m.get_aut()->get_dict(), *i));
|
||||||
}
|
}
|
||||||
ostr << "]\\n AP=[";
|
ostr << "]\\n AP=[";
|
||||||
bdd_print_sat(ostr, m.get_aut()->get_dict(),
|
escape_str(ostr,
|
||||||
m.ap_set_of(state));
|
bdd_format_sat(m.get_aut()->get_dict(),
|
||||||
|
m.ap_set_of(state)));
|
||||||
ostr << "]\\n APrec=[";
|
ostr << "]\\n APrec=[";
|
||||||
bdd_print_sat(ostr, m.get_aut()->get_dict(),
|
escape_str(ostr, bdd_format_sat(m.get_aut()->get_dict(),
|
||||||
m.aprec_set_of(state)) << "]";
|
m.aprec_set_of(state))) << "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << " " << state << " [shape=box,"
|
std::cout << " " << state << " [shape=box,"
|
||||||
|
|
@ -487,7 +490,7 @@ namespace spot
|
||||||
|
|
||||||
out << " " << state << " -> " << dest
|
out << " " << state << " -> " << dest
|
||||||
<< " [label=\"";
|
<< " [label=\"";
|
||||||
bdd_print_formula(out, m.get_aut()->get_dict(), label);
|
escape_str(out, bdd_format_formula(m.get_aut()->get_dict(), label));
|
||||||
out << "\"]" << std::endl;
|
out << "\"]" << std::endl;
|
||||||
|
|
||||||
if (seen[dest])
|
if (seen[dest])
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,7 @@ TESTS = \
|
||||||
tripprod.test \
|
tripprod.test \
|
||||||
mixprod.test \
|
mixprod.test \
|
||||||
dupexp.test \
|
dupexp.test \
|
||||||
|
kv.test \
|
||||||
reduccmp.test \
|
reduccmp.test \
|
||||||
reductgba.test \
|
reductgba.test \
|
||||||
scc.test \
|
scc.test \
|
||||||
|
|
|
||||||
41
src/tgbatest/kv.test
Executable file
41
src/tgbatest/kv.test
Executable file
|
|
@ -0,0 +1,41 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# Copyright (C) 2009 Laboratoire de Recherche et Development de l'EPITA.
|
||||||
|
#
|
||||||
|
# This file is part of Spot, a model checking library.
|
||||||
|
#
|
||||||
|
# Spot is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Spot is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
# License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with Spot; see the file COPYING. If not, write to the Free
|
||||||
|
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
# 02111-1307, USA.
|
||||||
|
|
||||||
|
|
||||||
|
. ./defs
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
check ()
|
||||||
|
{
|
||||||
|
run 0 ../ltl2tgba -f -KV "$1" > out.dot
|
||||||
|
run 0 $DOT out.dot > /dev/null
|
||||||
|
rm -f out.dot
|
||||||
|
}
|
||||||
|
|
||||||
|
# We don't check the output, but running these might be
|
||||||
|
# enough to trigger assertions in the code, or raise valgrind concerns.
|
||||||
|
|
||||||
|
check 'a R (b R c)'
|
||||||
|
check '(a U b) U (c U d)'
|
||||||
|
check '((Xp2)U(X(1)))*(p1 R(p2 R p0))'
|
||||||
|
|
||||||
|
# Make sure escaped variables print OK.
|
||||||
|
check '"G1"U"GG" && "FF"'
|
||||||
Loading…
Add table
Add a link
Reference in a new issue