Use []=> and <>=> as sugar in the output when possible.

* src/ltlast/multop.hh (is_multop): Take a constant formula as input.
* src/ltlvisit/tostring.cc (to_string_visitor::visit(multop*)):
Output []=> or <>=> when the left argument of a []-> or <>-> is
a concatenation that ends in 1.
* doc/tl/tl.tex: Document this desugaring.
This commit is contained in:
Alexandre Duret-Lutz 2012-02-16 19:24:44 +01:00
parent 5e7c0add49
commit 412f946ac0
3 changed files with 32 additions and 12 deletions

View file

@ -185,11 +185,11 @@ namespace spot
/// Returns 0 otherwise.
inline
multop*
is_multop(formula* f, multop::type op)
is_multop(const formula* f, multop::type op)
{
if (f->kind() != formula::MultOp)
return 0;
multop* mo = static_cast<multop*>(f);
multop* mo = static_cast<multop*>(const_cast<formula*>(f));
if (mo->op() != op)
return 0;
return mo;
@ -197,8 +197,8 @@ namespace spot
/// \brief Cast \a f into a multop if it has type \a op1 or \a op2.
///
/// Cast \a f into a multop iff it is a multop instance with operator \a op1
/// or \a op2. Returns 0 otherwise.
/// Cast \a f into a multop iff it is a multop instance with
/// operator \a op1 or \a op2. Returns 0 otherwise.
inline
multop*
is_multop(const formula* f, multop::type op1, multop::type op2)