Expression ::= ( AssignmentExpression | LogicalExpression | EqualityExpression | ArithmeticExpression | UnaryExpression | CastExpression
| PrefixExpression | PostfixExpression | InstanceOfExpression | CreateExpression | AttributeExpression | MethodExpression
| ArrayExpression | "this" | "super" | ID | LiteralExpression | ("(" Expression ")").
AssignmentExpression ::= Expression ("=" | "+=" | "-=" | "*=" | "/=" | "%=") Expression.
LogicalExpression ::= Expression ("&&" | "||") Expression.
EqualityExpression ::= Expression ("==" | "!=" | ">" | ">=" | "<" | "<=") Expression.
ArithmeticExpression ::= Expression ("+" | "-" | "*" | "/"| "%") Expression.
UnaryExpression ::= ("+" | "-" | "!") Expression.
CastExpression ::= "(" Type ")" Expression.
PrefixExpression ::= ("++" | "--") Expression.
PostfixExpression ::= Expression ("++" | "--").
InstanceOfExpression ::= Expression "instanceof" Type.
NewExpression ::= "new" QName (("[" "]") | (("(" (ArgsList)? ")")? ("{" ArgsMap "}")?)).
MemberCallExpression ::= (Expression ".")? ID ("(" (ArgsList)? ")")?.
ArrayExpression ::= Expression ("[" ArgsList "]")+.
LiteralExpression ::= Integer | Double | Boolean | Char | String | Range | List | Map | Null
VariableInit ::= ((("(" (ArgsList)? ")")? ("{" ArgsMap "}")?) | ("=" Expression)).
ArgsList ::= Expression ("," Expression)*.
ArgsMap ::= ArgsMapKeyValue ("," ArgsMapKeyValue)*.
ArgsMapKeyValue ::= ID "=" Expression |