Recognize and use "*" (or "[*]") as an abbreviation for 1*.
* src/ltlparse/ltlparse.yy: Recognize "*" as "1*". * src/ltlvisit/tostring.cc: Abbreviate "1*" as "*". * src/tgbatest/ltl2tgba.test: Use the new syntax.
This commit is contained in:
parent
4bde130d38
commit
93c042d0fa
3 changed files with 15 additions and 1 deletions
|
|
@ -283,6 +283,8 @@ rationalexp: booleanatom
|
||||||
{ missing_right_binop($$, $1, @2, "fusion operator"); }
|
{ missing_right_binop($$, $1, @2, "fusion operator"); }
|
||||||
| rationalexp OP_STAR
|
| rationalexp OP_STAR
|
||||||
{ $$ = unop::instance(unop::Star, $1); }
|
{ $$ = unop::instance(unop::Star, $1); }
|
||||||
|
| OP_STAR
|
||||||
|
{ $$ = unop::instance(unop::Star, constant::true_instance()); }
|
||||||
|
|
||||||
bracedrationalexp: BRACE_OPEN rationalexp BRACE_CLOSE
|
bracedrationalexp: BRACE_OPEN rationalexp BRACE_CLOSE
|
||||||
{ $$ = $2; }
|
{ $$ = $2; }
|
||||||
|
|
|
||||||
|
|
@ -226,6 +226,12 @@ namespace spot
|
||||||
top_level_ = true;
|
top_level_ = true;
|
||||||
break;
|
break;
|
||||||
case unop::Star:
|
case unop::Star:
|
||||||
|
// Abbreviate "1*" as "*".
|
||||||
|
if (uo->child() == constant::true_instance())
|
||||||
|
{
|
||||||
|
os_ << "*";
|
||||||
|
return;
|
||||||
|
}
|
||||||
// 1* is OK, no need to print {1}*.
|
// 1* is OK, no need to print {1}*.
|
||||||
need_parent = false;
|
need_parent = false;
|
||||||
// Do not output anything yet, star is a postfix operator.
|
// Do not output anything yet, star is a postfix operator.
|
||||||
|
|
@ -469,6 +475,12 @@ namespace spot
|
||||||
in_ratexp_ = true;
|
in_ratexp_ = true;
|
||||||
break;
|
break;
|
||||||
case unop::Star:
|
case unop::Star:
|
||||||
|
// Abbreviate "1*" as "*".
|
||||||
|
if (uo->child() == constant::true_instance())
|
||||||
|
{
|
||||||
|
os_ << "*";
|
||||||
|
return;
|
||||||
|
}
|
||||||
// Do not output anything yet, star is a postfix operator.
|
// Do not output anything yet, star is a postfix operator.
|
||||||
need_parent = false;
|
need_parent = false;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ check_psl '{((!c;b*) & d);e}'
|
||||||
check_psl '{(a* & (c;b*) & d);e}'
|
check_psl '{(a* & (c;b*) & d);e}'
|
||||||
# Example from "Beyond Hardware Verification" by Glazberg, Moulin, Orni,
|
# Example from "Beyond Hardware Verification" by Glazberg, Moulin, Orni,
|
||||||
# Ruah, Zarpas (2007).
|
# Ruah, Zarpas (2007).
|
||||||
check_psl '{1[*];req;ack}|=>{start;busy[*];done}'
|
check_psl '{[*];req;ack}|=>{start;busy[*];done}'
|
||||||
|
|
||||||
# Make sure 'a U (b U c)' has 3 states and 6 transitions,
|
# Make sure 'a U (b U c)' has 3 states and 6 transitions,
|
||||||
# before and after degeneralization.
|
# before and after degeneralization.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue