1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
module languages/java-14/expressions/Priorities
imports
languages/java-14/lexical/Identifiers
languages/java-14/expressions/Main
exports
%% Casts are Unary Expressions
context-free priorities
%% <copy>
Expr "." "new" Id "(" {Expr ","}* ")" ClassBody? -> Expr
> {
Expr ArraySubscript -> ArrayAccess
Expr "." Id -> FieldAccess
Expr "." Id -> MethodId
}
> {right:
Expr "++" -> Expr
Expr "--" -> Expr
}
%% </copy>
> { "(" PrimType ")" Expr -> Expr
"(" RefType ")" Expr -> Expr
}
%% ( PrimType ) UnaryExpression
context-free priorities
"(" PrimType ")" Expr -> Expr
%% <copy>
> {left:
Expr "*" Expr -> Expr
Expr "/" Expr -> Expr
Expr "%" Expr -> Expr
}
%% ( ReferenceType ) UnaryExpressionNotPlusMinus
context-free priorities
"(" RefType ")" Expr -> Expr
> {
"++" Expr -> Expr
"--" Expr -> Expr
"+" Expr -> Expr
"-" Expr -> Expr
}
context-free priorities
Expr "." "new" Id "(" {Expr ","}* ")" ClassBody? -> Expr
> {
Expr ArraySubscript -> ArrayAccess
Expr "." Id -> FieldAccess
Expr "." Id -> MethodId
}
> {right:
Expr "++" -> Expr
Expr "--" -> Expr
}
> {
"++" Expr -> Expr
"--" Expr -> Expr
"+" Expr -> Expr
"-" Expr -> Expr
"~" Expr -> Expr
"!" Expr -> Expr
}
> {left:
Expr "*" Expr -> Expr
Expr "/" Expr -> Expr
Expr "%" Expr -> Expr
}
> {left:
Expr "+" Expr -> Expr
Expr "-" Expr -> Expr
}
> {left:
Expr "<<" Expr -> Expr
Expr ">>" Expr -> Expr
Expr ">>>" Expr -> Expr
}
> {left:
Expr "instanceof" RefType -> Expr
Expr "<" Expr -> Expr
Expr ">" Expr -> Expr
Expr "<=" Expr -> Expr
Expr ">=" Expr -> Expr
}
> {left:
Expr "==" Expr -> Expr
Expr "!=" Expr -> Expr
}
> Expr "&" Expr -> Expr
> Expr "^" Expr -> Expr
> Expr "|" Expr -> Expr
> Expr "&&" Expr -> Expr
> Expr "||" Expr -> Expr
> Expr CondMid Expr -> Expr
> {right:
LHS "=" Expr -> Expr
LHS "*=" Expr -> Expr
LHS "/=" Expr -> Expr
LHS "%=" Expr -> Expr
LHS "+=" Expr -> Expr
LHS "-=" Expr -> Expr
LHS "<<=" Expr -> Expr
LHS ">>=" Expr -> Expr
LHS ">>>=" Expr -> Expr
LHS "&=" Expr -> Expr
LHS "^=" Expr -> Expr
LHS "|=" Expr -> Expr
}
|