* tgba/bdddict.hh (bdd_dict::register_propositions, bdd_dict::register_accepting_variables): New methods. * src/bdddict.cc: Likewise. * tgba/tgbaexplicit.cc (tgba_explicit::add_conditions, tgba_explicit::add_accepting_conditions): New methods. (tgba_explicit::get_init_state): Add an "empty" initial state to empty automata. * tgba/tgbaexplicit.hh: (tgba_explicit::add_conditions, tgba_explicit::add_accepting_conditions): New methods. * tgbaalgos/Makefiles.am (tgbaalgos_HEADERS, libtgbaalgos_la_SOURCES): Add dupexp.hh and dupexp.cc. * tgbaalgos/dupexp.hh, tgbaalgos/dupexp.cc: New files. * tgbatest/Makefile.am (AM_CXXFLAGS): New variable. (check_SCRIPTS): Add dupexp.test. (CLEANFILES): Add output1 and output2. * tgbatest/dupexp.test: New file. * tgbatest/ltl2tgba.cc: Handle -s and -S. * tgbatest/tgbaread.cc: Remove unused variable exit_code.
59 lines
1.2 KiB
C++
59 lines
1.2 KiB
C++
#include <iostream>
|
|
#include <cassert>
|
|
#include "tgbaparse/public.hh"
|
|
#include "tgba/tgbaexplicit.hh"
|
|
#include "tgbaalgos/dotty.hh"
|
|
#include "ltlast/allnodes.hh"
|
|
|
|
void
|
|
syntax(char* prog)
|
|
{
|
|
std::cerr << prog << " [-d] filename" << std::endl;
|
|
exit(2);
|
|
}
|
|
|
|
int
|
|
main(int argc, char** argv)
|
|
{
|
|
if (argc < 2)
|
|
syntax(argv[0]);
|
|
|
|
bool debug = false;
|
|
int filename_index = 1;
|
|
|
|
if (!strcmp(argv[1], "-d"))
|
|
{
|
|
debug = true;
|
|
if (argc < 3)
|
|
syntax(argv[0]);
|
|
filename_index = 2;
|
|
}
|
|
|
|
spot::bdd_dict* dict = new spot::bdd_dict();
|
|
|
|
spot::ltl::environment& env(spot::ltl::default_environment::instance());
|
|
spot::tgba_parse_error_list pel;
|
|
spot::tgba_explicit* a = spot::tgba_parse(argv[filename_index],
|
|
pel, dict, env, debug);
|
|
|
|
if (spot::format_tgba_parse_errors(std::cerr, pel))
|
|
return 2;
|
|
|
|
if (a)
|
|
{
|
|
spot::dotty_reachable(std::cout, a);
|
|
delete a;
|
|
}
|
|
else
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
delete dict;
|
|
assert(spot::ltl::atomic_prop::instance_count() == 0);
|
|
assert(spot::ltl::unop::instance_count() == 0);
|
|
assert(spot::ltl::binop::instance_count() == 0);
|
|
assert(spot::ltl::multop::instance_count() == 0);
|
|
|
|
return 0;
|
|
}
|