BNF for TermWare1.jj
NON-TERMINALS
readStatement
::=
(
readTerm
";" |
readTerm
<EOF> | <EOF> )
readTerm
::=
readLetTerm
|
readTermExpression0
readLetTerm
::=
"let"
readTerm
readTermExpression0
::=
readTermExpression1
( ( "["
readTermExpression1
"]" )? <LEFT_ARROW>
readTermExpression1
( "["
readTermExpression1
"]" )? ( ( <BIT_OR> "["
readTermExpression1
"]" <LEFT_ARROW>
readTermExpression1
( "["
readTermExpression1
"]" )? ) )* ( "!->"
readTermExpression1
( "["
readTermExpression1
"]" )? )? )?
readTermExpression1
::=
readTermExpression2
( ( <QUESTION>
readTermExpression1
<TWO_DOTS>
readTermExpression1
) )?
readTermExpression2
::=
readTermExpression3
( ( <LOGICAL_OR>
readTermExpression2
) )?
readTermExpression3
::=
readTermExpression4
( <LOGICAL_AND>
readTermExpression3
)?
readTermExpression4
::=
readTermExpression5
readTermExpression5
::=
readTermExpression6
( <BIT_AND>
readTermExpression5
)?
readTermExpression6
::=
readTermExpression7
( ( <EQ> | <NEQ> )
readTermExpression7
)?
readTermExpression7
::=
readTermExpression8
( ( <LESS> | <GREATER> | <LESS_EQ> | <GREATER_EQ> | <EQ_GREATER> | <IN> )
readTermExpression8
)?
readTermExpression8
::=
readTermExpression9
( ( ( <LEFT_SHIFT> | <RIGHT_SHIFT> )
readTermExpression9
) )*
readTermExpression9
::=
readTermExpression10
( ( ( <PLUS> | <MINUS> )
readTermExpression10
) )*
readTermExpression10
::=
readTermExpression11
( ( ( <MULTIPLY> | <DIVIDE> | <MOD> )
readTermExpression11
) )*
readTermExpression11
::=
( <PLUS> | <MINUS> | <LOGICAL_NOT> | <BIT_NEGATE> )
readTermExpression10
|
readTermExpression12
readTermExpression12
::=
( <DOT> )?
readTermExpression13
( ( <DOT> (
readTermExpression13
) ) )*
readTermExpression13
::=
readTermExpressionLast
readTermExpressionLast
::=
readScopedName
(
readTermArgs
)?
|
readPrimitive
|
readX
|
"("
readTerm
( <COMMA>
readTerm
)* ")"
|
"{"
readTerm
(
readPatternTail
)? "}"
|
"{" "}"
|
"["
readTerm
(
readPatternTail
)? "]"
|
"[" "]"
readScopedName
::=
<IDENT> ( ( <TWO_TWO_DOTS> <IDENT> ) )*
readPatternTail
::=
<TWO_DOTS>
readTerm
|
<COMMA>
readTermCommaList
readX
::=
<X_LITERAL>
readTermArgs
::=
"("
readTermCommaList
")"
readTermCommaList
::=
(
readTerm
( <COMMA>
readTerm
)* )?
readPrimitive
::=
readString
|
readInteger
|
readDouble
|
readBoolean
|
readNIL
readString
::=
<STRING_LITERAL>
readInteger
::=
<INTEGER_LITERAL>
readDouble
::=
<DOUBLE_LITERAL>
readBoolean
::=
<TRUE>
|
<FALSE>
readNIL
::=
<NIL>