parse | ::= | ( ClauseSeq <EOF> ) |
ClauseBlock | ::= | ( ( ( ForallQuantifier )? <AT> StructTerm )? SimpleClauseBlock ) |
SimpleClauseBlock | ::= | ( "{" ClauseSeq "}" ) |
ClauseSeq | ::= | ( Clause ( ClauseSeq )? ) |
Clause | ::= | ( ClauseBlock | ( ( ForallQuantifier )? Term <EOC> ) ) |
ForallQuantifier | ::= | ( <FORALL> IdTermSeq ) |
Term | ::= | Op1200Term |
Op1200Term | ::= | ( ( ( Unop1200 )? Op1100Term ) ( Binop1200 Op1200Term )? ) |
Op1100Term | ::= | ( Op1000Term ( Binop1100 Op1100Term )? ) |
Op1000Term | ::= | ( Op900Term ( Binop1000 Op1000Term )? ) |
Op900Term | ::= | ( ( Unop900 Op900Term ) | ( Quantop900 IdTermSeq Op900Term ) | Binop900Term ) |
Binop900Term | ::= | ( Op700Term ( Binop900 Binop900Term )? ) |
Op700Term | ::= | ( Op680Term ( Binop700 Op700Term )? ) |
Op680Term | ::= | ( Op661Term ( Binop680 Op680Term )? ) |
Op661Term | ::= | ( Op500Term ( Binop661 Op661Term )? ) |
Op500Term | ::= | ( ( ( Unop500 )? Op400Term ) ( Binop500 Op500Term )? ) |
Op400Term | ::= | ( StructTerm ( Binop400 Op400Term )? ) |
StructTerm | ::= | ( UnitTerm ( ArgList | SBArgList )* ) |
UnitTerm | ::= | ( IdTerm | Integer | "(" Term ")" | "<" Term ">" | SimpleClauseBlock ) |
IdTerm | ::= | ( ( Variable | Symbol ) ( <COLON> IdTerm )? ) |
Variable | ::= | ( "?" <SYMBOL> ) |
Symbol | ::= | ( <SYMBOL> | <Q_SYMBOL> | <DQ_SYMBOL> ) |
Integer | ::= | ( <INTEGER_LITERAL> ) |
ArgList | ::= | ( "(" TermSeq ")" ) |
SBArgList | ::= | ( "[" TermSeq "]" ) |
TermSeq | ::= | ( Op900Term ( ( <COMMA> | <SEMICOLON> ) Op900Term )* ) |
IdTermSeq | ::= | ( IdTerm ( <COMMA> IdTerm )* ) |
Unop1200 | ::= | ( <IMPLIEDBY> ) |
Binop1200 | ::= | ( <IMPLIEDBY> | <EQUIV> | <ASSIGN> ) |
Binop1100 | ::= | ( <SEMICOLON> | <OR> ) |
Binop1000 | ::= | ( <COMMA> | <AND> ) |
Quantop900 | ::= | ( <FORALL> | <EXISTS> ) |
Unop900 | ::= | ( <NOT> | <NEG> ) |
Binop900 | ::= | ( <IMPLIES> ) |
Binop700 | ::= | ( <EQUALS> | <IS> ) |
Binop680 | ::= | ( <AT> ) |
Binop661 | ::= | ( <DOT> ) |
Unop500 | ::= | ( <PLUS> | <MINUS> ) |
Binop500 | ::= | ( <PLUS> | <MINUS> ) |
Binop400 | ::= | ( <TIMES> | <BY> | <INTERSECT> | <UNION> | <DIFF> ) |