BNF for PropositionalLogicParser.jj

NON-TERMINALS

FileInputModeStart ::= ( StatementList <EOL> | Command ( ";" )? <EOL> | <EOL> )* <EOF>
Start ::= StatementList <EOL>
| Command ( ";" )? <EOL>
| <EOL>
| <EOF>
StatementList ::= Statement ( ";" Statement )* ( ";" )?
Statement ::= AssignmentExpressionList
| PropositionalExpression
| ";"
PropositionalExpression ::= Formula
Formula ::= AdditiveExpression
AdditiveExpression ::= MultiplicativeExpression ( ( <IMPLIES> AdditiveExpression | <IFF> AdditiveExpression ) )*
AssignmentExpressionList ::= AssignmentExpression ( <COMMA> AssignmentExpression )*
AssignmentExpression ::= ValueAssignmentExpression
| DescriptionAssignmentExpression
ValueAssignmentExpression ::= <IDENTIFIER> <VALUE_ASSIGN> Formula
DescriptionAssignmentExpression ::= <IDENTIFIER> <DESCRIPTION_ASSIGN> <STRING_LITERAL>
MultiplicativeExpression ::= UnaryExpression ( ( <AND> MultiplicativeExpression | <OR> MultiplicativeExpression ) )*
UnaryExpression ::= <NOT> UnaryExpression
| AtomicExpression
AtomicExpression ::= <NUMBER>
| <TRUE>
| <FALSE>
| Symbol
| "(" Formula ")"
Symbol ::= <IDENTIFIER>
Command ::= <EXIT>
| <ECHO_STRING>
| <SWITCH_TO_INTERACTIVE_MODE>
| <INPUT_FILE> <STRING_LITERAL>
| <TRANSLATE> Formula
| <LIST_COMMAND> Formula
| <SET_SYSTEM> <STRING_LITERAL>
| <CURRENT_SYSTEM>
| <SET_RELATION> <IDENTIFIER>
| <CREATE_RELATION> <IDENTIFIER> BinaryRelationalSet
| <SHOW_RELATION> <IDENTIFIER>
| OrderedPairExpression ( "," OrderedPairExpression )*
| <IMPLICIT_RELATION_REMOVE> OrderedPairExpression ( "," OrderedPairExpression )*
| <ADD_TO_RELATION> <IDENTIFIER> OrderedPairExpression ( "," OrderedPairExpression )*
| <REMOVE_FROM_RELATION> <IDENTIFIER> OrderedPairExpression ( "," OrderedPairExpression )*
| <SET_BORDERLINE> <NUMBER>
| <SATISFIABLE> Formula
| <VALID> Formula
| EntailmentExpression
BinaryRelationalSet ::= "{" ( OrderedPairExpression ( "," OrderedPairExpression )* )? "}"
OrderedPairExpression ::= "<" <IDENTIFIER> "," ( <NUMBER> | <IDENTIFIER> ) ">"
EntailmentExpression ::= "{" Formula ( "," Formula )* "}" <MODELS> Formula ( <EOF> )?