* src/ltlvisit/Makefile.am (libltlvisit_a_SOURCES): Add them. * src/ltltest/tunabbrev.test: New file. * src/ltltest/lunabbrev.test: Fix comment. * src/ltltest/Makefile.am (TESTS): Add tunabbrev.test. (check_PROGRAMS): Add tunabbrev. (tunabbrev_SOURCES, tunabbrev_CPPFLAGS): New variables. * src/ltltest/equals.cc (main) [TUNABBREV]: Call unabbreviate_ltl. * src/ltlvisit/lunabbrev.hh (unabbreviate_logic_visitor::recurse): New virtual function. * src/ltlvisit/lunabbrev.cc (unabbreviate_logic_visitor::recurse): Likewise. (unabbreviate_logic_visitor::visit): Use it instead of calling unabbreviate_logic directly.
53 lines
944 B
C++
53 lines
944 B
C++
#include "ltlast/allnodes.hh"
|
|
#include "tunabbrev.hh"
|
|
|
|
namespace spot
|
|
{
|
|
namespace ltl
|
|
{
|
|
unabbreviate_ltl_visitor::unabbreviate_ltl_visitor()
|
|
{
|
|
}
|
|
|
|
unabbreviate_ltl_visitor::~unabbreviate_ltl_visitor()
|
|
{
|
|
}
|
|
|
|
void
|
|
unabbreviate_ltl_visitor::visit(const unop* uo)
|
|
{
|
|
switch (uo->op())
|
|
{
|
|
case unop::X:
|
|
case unop::Not:
|
|
this->super::visit(uo);
|
|
return;
|
|
case unop::F:
|
|
result_ = new binop(binop::U,
|
|
new constant(constant::True),
|
|
recurse(uo->child()));
|
|
return;
|
|
case unop::G:
|
|
result_ = new binop(binop::R,
|
|
new constant(constant::False),
|
|
recurse(uo->child()));
|
|
return;
|
|
}
|
|
}
|
|
|
|
formula*
|
|
unabbreviate_ltl_visitor::recurse(const formula* f)
|
|
{
|
|
return unabbreviate_ltl(f);
|
|
}
|
|
|
|
formula*
|
|
unabbreviate_ltl(const formula* f)
|
|
{
|
|
unabbreviate_ltl_visitor v;
|
|
f->accept(v);
|
|
return v.result();
|
|
}
|
|
|
|
}
|
|
}
|