* src/tgbaparse/tgbaparse.yy (acc_list): Do not explicitly delete

an undeclared acceptance condition.
* src/tgbaalgos/save.cc (print_acc): Unquote atomic propositions.
This commit is contained in:
Alexandre Duret-Lutz 2005-04-06 17:23:29 +00:00
parent d309c01941
commit 5d0f702383
3 changed files with 17 additions and 4 deletions

View file

@ -1,4 +1,4 @@
// Copyright (C) 2003, 2004 Laboratoire d'Informatique de Paris 6 (LIP6),
// Copyright (C) 2003, 2004, 2005 Laboratoire d'Informatique de Paris 6 (LIP6),
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
// et Marie Curie.
//
@ -23,6 +23,7 @@
#include "save.hh"
#include "tgba/bddprint.hh"
#include "ltlvisit/tostring.hh"
#include "ltlast/atomic_prop.hh"
#include "reachiter.hh"
#include "misc/escape.hh"
@ -84,8 +85,16 @@ namespace spot
bdd_dict::vf_map::const_iterator vi =
d->acc_formula_map.find(v);
assert(vi != d->acc_formula_map.end());
std::string s = ltl::to_string(vi->second);
if (dynamic_cast<const ltl::atomic_prop*>(vi->second)
&& s[0] == '"')
{
// Unquote atomic propositions.
s.erase(s.begin());
s.resize(s.size() - 1);
}
os_ << " \"";
escape_str(os_, ltl::to_string(vi->second)) << "\"";
escape_str(os_, s) << "\"";
break;
}
cube = bdd_low(cube);

View file

@ -179,9 +179,9 @@ acc_list:
if (! result->has_acceptance_condition(f))
{
error_list.push_back(spot::tgba_parse_error(@2,
"undeclared acceptance condition"));
"undeclared acceptance condition `" + *$2 + "'"));
destroy(f);
delete $2;
// $2 will be destroyed on error recovery.
YYERROR;
}
$1->push_back(f);