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:
parent
bbbc1acc14
commit
b06c9cd563
10 changed files with 188 additions and 66 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue