* src/ltlvisit/clone.hh, src/ltlvisit/clone.cc: New files.
* src/ltlvisit/Makefile.am (libltlvisit_a_SOURCES): Add them. * src/ltlvisit/lunabbrev.hh, src/ltlvisit/lunabbrev.cc: Inherit from clone_visitor and remove all useless methods (now inherited).
This commit is contained in:
parent
0c7a2412a4
commit
ae7fdeba59
6 changed files with 125 additions and 50 deletions
74
src/ltlvisit/clone.cc
Normal file
74
src/ltlvisit/clone.cc
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
#include "ltlast/allnodes.hh"
|
||||
#include "clone.hh"
|
||||
|
||||
namespace spot
|
||||
{
|
||||
namespace ltl
|
||||
{
|
||||
clone_visitor::clone_visitor()
|
||||
{
|
||||
}
|
||||
|
||||
clone_visitor::~clone_visitor()
|
||||
{
|
||||
}
|
||||
|
||||
formula*
|
||||
clone_visitor::result() const
|
||||
{
|
||||
return result_;
|
||||
}
|
||||
|
||||
void
|
||||
clone_visitor::visit(const atomic_prop* ap)
|
||||
{
|
||||
result_ = new atomic_prop(ap->name());
|
||||
}
|
||||
|
||||
void
|
||||
clone_visitor::visit(const constant* c)
|
||||
{
|
||||
result_ = new constant(c->val());
|
||||
}
|
||||
|
||||
void
|
||||
clone_visitor::visit(const unop* uo)
|
||||
{
|
||||
result_ = new unop(uo->op(), recurse(uo->child()));
|
||||
}
|
||||
|
||||
void
|
||||
clone_visitor::visit(const binop* bo)
|
||||
{
|
||||
result_ = new binop(bo->op(),
|
||||
recurse(bo->first()), recurse(bo->second()));
|
||||
}
|
||||
|
||||
void
|
||||
clone_visitor::visit(const multop* mo)
|
||||
{
|
||||
multop* res = new multop(mo->op());
|
||||
unsigned mos = mo->size();
|
||||
for (unsigned i = 0; i < mos; ++i)
|
||||
{
|
||||
res->add(recurse(mo->nth(i)));
|
||||
}
|
||||
result_ = res;
|
||||
}
|
||||
|
||||
formula*
|
||||
clone_visitor::recurse(const formula* f)
|
||||
{
|
||||
return clone(f);
|
||||
}
|
||||
|
||||
formula*
|
||||
clone(const formula* f)
|
||||
{
|
||||
clone_visitor v;
|
||||
f->accept(v);
|
||||
return v.result();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue