BNF for SpecParse.jj

NON-TERMINALS

Ltl ::= LtlUntil ( "." )?
LtlUntil ::= LtlWhile ( "U" LtlWhile )*
LtlWhile ::= LtlImplied ( "W" LtlImplied )*
LtlImplied ::= LtlOr ( "<=" LtlOr )?
LtlOr ::= LtlAnd ( "\\/" LtlAnd )*
LtlAnd ::= LtlMonadic ( "/\\" LtlMonadic )*
LtlMonop ::= ( "[]" | "G" )
| ( "<>" | "F" )
LtlMonadic ::= "(" LtlUntil ")"
| LtlMonop LtlMonadic
| "O" LtlMonadic
| ( "!" | "~" | "\u00ac" ) LtlMonadic
| TlProp
CtlStarSpec ::= CtlSpec ( "." )?
CtlSpec ::= CtlComplexSpec
| CtlSimpleSpec
CtlComplexSpec ::= "X" CtlSpec
| CtlUntilRelease CtlSpecPair
| CtlSometimeAlways CtlSpec
| CtlPathQuant CtlQuantified
CtlUQuant ::= "X" CtlSpec
| CtlSometimeAlways CtlSpec
CtlXQuant ::= CtlPrefix CtlSpec
| CtlSpec
CtlFGQuant ::= CtlPrefix CtlSpec
| CtlSpec
CtlQuantified ::= CtlUNum CtlUQuant
| "X" CtlXQuant
| CtlUntilRelease CtlSpecPair
| CtlSometimeAlways CtlFGQuant
| CtlSimpleSpec
CtlSimpleSpec ::= "(" CtlSpec ")"
| "~" TlProp
| TlProp
| "t"
| "f"
| CtlBoolConnect CtlSpecPair
CtlSpecPair ::= "(" CtlSpec "," CtlSpec ")"
CtlPrefix ::= "_" "{" TlProp "}" "_"
CtlSometimeAlways ::= "F"
| "G"
CtlUntilRelease ::= "U"
| "V"
CtlBoolConnect ::= "&"
| "|"
CtlPathQuant ::= "A"
| "E"
CtlUNum ::= "_" TlProp "_"
TlProp ::= ( "p" )? <NUMBER>