Add support for W (weak until) and M (strong release) operators.
* src/ltlast/binop.cc, src/ltlast/binop.cc: Add support for these new operators. * src/ltlparse/ltlparse.yy, src/ltlparse/ltlscan.ll: Parse them. * src/ltltest/reduccmp.test: Add new tests for W and M. * src/ltlvisit/basicreduce.cc, src/ltlvisit/contain.cc, src/ltlvisit/lunabbrev.cc, src/ltlvisit/nenoform.cc, src/ltlvisit/randomltl.cc, src/ltlvisit/randomltl.hh, src/ltlvisit/reduce.cc, src/ltlvisite/simpfg.cc, src/ltlvisit/simpfg.hh, src/ltlvisit/syntimpl.cc, src/ltlvisit/tostring.cc, src/tgba/formula2bdd.cc, src/tgbaalgos/eltl2tgba_lacim.cc, src/tgbaalgos/ltl2taa.cc, src/tgbaalgos/ltl2tgba_fm.cc, src/tgbaalgos/ltl2tgba_lacim.cc: Add support for W and M. * src/tgbatest/ltl2neverclaim.test: Test never claim output using LBTT, this is more thorough. Also we cannot use -N any more in the spotlbtt.test. * src/tgbatests/ltl2tgba.cc: Define M and W for ELTL. * src/tgbatest/ltl2neverclaim.test: Test W and M, and use -DS instead of -N, because lbtt-translate does not want to translate these operators for tools that masquerade as Spin.
This commit is contained in:
parent
35a57c6dff
commit
0fc0ea3166
25 changed files with 584 additions and 123 deletions
|
|
@ -79,6 +79,7 @@ using namespace spot::ltl;
|
|||
%token OP_OR "or operator" OP_XOR "xor operator" OP_AND "and operator"
|
||||
%token OP_IMPLIES "implication operator" OP_EQUIV "equivalent operator"
|
||||
%token OP_U "until operator" OP_R "release operator"
|
||||
%token OP_W "weak until operator" OP_M "strong release operator"
|
||||
%token OP_F "sometimes operator" OP_G "always operator"
|
||||
%token OP_X "next operator" OP_NOT "not operator"
|
||||
%token <str> ATOMIC_PROP "atomic proposition"
|
||||
|
|
@ -95,7 +96,7 @@ using namespace spot::ltl;
|
|||
%left OP_AND
|
||||
|
||||
/* LTL operators. */
|
||||
%left OP_U OP_R
|
||||
%left OP_U OP_R OP_M OP_W
|
||||
%nonassoc OP_F OP_G
|
||||
%nonassoc OP_X
|
||||
|
||||
|
|
@ -239,6 +240,14 @@ subformula: ATOMIC_PROP
|
|||
{ $$ = binop::instance(binop::R, $1, $3); }
|
||||
| subformula OP_R error
|
||||
{ missing_right_binop($$, $1, @2, "release operator"); }
|
||||
| subformula OP_W subformula
|
||||
{ $$ = binop::instance(binop::W, $1, $3); }
|
||||
| subformula OP_W error
|
||||
{ missing_right_binop($$, $1, @2, "weak until operator"); }
|
||||
| subformula OP_M subformula
|
||||
{ $$ = binop::instance(binop::M, $1, $3); }
|
||||
| subformula OP_M error
|
||||
{ missing_right_binop($$, $1, @2, "strong release operator"); }
|
||||
| OP_F subformula
|
||||
{ $$ = unop::instance(unop::F, $2); }
|
||||
| OP_F error
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue