Extend the ELTL parser to support more complex aliases of

automaton operators such as Strong=G(F($0))->G(F($1)) and
G=R(false, $0).

* src/eltlparse/eltlparse.yy, src/eltlparse/eltlscan.ll: Add
support for more complex aliases.
* src/eltltest/acc.cc, src/eltltest/acc.test: Adjust.
* src/ltlast/nfa.cc, src/ltlast/nfa.hh (arity): Now returns an
unsigned value.
* src/tgbatest/eltl2tgba.test: Adjust.
* src/tgbalagos/eltl2tgba_lacim.cc: Fix sanity.
This commit is contained in:
Damien Lefortier 2009-04-18 16:24:18 +02:00
parent bbbc1acc14
commit b06c9cd563
10 changed files with 188 additions and 66 deletions

View file

@ -22,6 +22,9 @@
#include <iostream>
#include <cassert>
#include "eltlparse/public.hh"
#include "ltlvisit/destroy.hh"
#include "ltlvisit/lunabbrev.hh"
#include "ltlvisit/nenoform.hh"
int
main(int argc, char** argv)
@ -37,6 +40,12 @@ main(int argc, char** argv)
return 1;
}
const spot::ltl::formula* f1 = spot::ltl::unabbreviate_logic(f);
const spot::ltl::formula* f2 = spot::ltl::negative_normal_form(f1);
spot::ltl::destroy(f1);
assert(f != 0);
std::cout << f->dump() << std::endl;
assert(f2 != 0);
std::cout << f2->dump() << std::endl;
}

View file

@ -22,6 +22,18 @@ A(1,a,a|b)&X(!f)
EOF
run 0 ./acc input || exit 1
cat >input <<EOF
include prelude
A=(
0 1 \$2
1 2 \$0
accept 0
)
%
A(1,a)
EOF
run 1 ./acc input || exit 1
cat >input <<EOF
X=(
0 1 true