式 
演算子優先順位 
- 上にあるほど優先が高い。
- ほぼCと同じ。
- 諸事情により一部の演算子は全角文字で記述してあります
カテゴリ | C演算子 | オリジナル | subscript | [ ] | | postfix | ++ -- | | unary_prefix | ++ -- + - ! ~ ( ) | | arithmetic_multiplicative | * / % | | arithmetic_additive | + - | | shift | >> << | | comparison_relational | < <= > >= | | comparison_equality | == != | | bitwise_and | & | | bitwise_xor | ^ | | bitwise_or | | | | boolean_and | && | | boolean_or | || | | conditional | ? : | | assignment | = += -= *= /= %= >>= <<= &= |= ^= | | sequence | , | |
ExpressionのEBNF 
0
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
| AdditiveOperator:
"+"
| "-"
AdditiveExpression:
MultiplicativeExpression (AdditiveOperator MultiplicativeExpression)*
ShiftOperator:
">>"
| "<<"
ShiftExpression:
AdditiveExpression (ShiftOperator AdditiveExpression)*
RelationalOperator:
">"
| "<"
| "<="
| ">="
RelationalExpression:
ShiftExpression (RelationalOperator ShiftExpression)*
EqualityOperator:
"=="
| "!="
EqualityExpression:
RelationalExpression (EqulityOperator RelationalExpression)*
BitwiseAndOperator:
"&"
BitwiseAndExpression:
EqualityExpression (BitwiseAndOperator EqualityExpression )*
BitwiseXorOperator:
"^"
BitwiseXorExpression:
BitwiseAndExpression (BitwiseXorOperator BitwiseAndExpression)*
BitwiseOrOperator:
"|"
BitwiseOrExpression:
BitwiseXorExpression (BitwiseOrOperator BitwiseXorExpression)*
LogicalAndOperator:
"&&"
LogicalAndExpression:
BitwiseOrExpression (LogicalAndOperator BitwiseOrExpression)*
LogicalOrOperator:
"||"
LogicalOrExpression:
LogicalAndExpression (LogicalOrOperator LogicalAndExpression)*
ConditionalExpression:
LogicalOrExpression ("?" Expression ":" ConditionalExpression)*
AssignmentOperator:
"="
| "+="
| "-="
| "*="
| "/="
| "%="
| ">>="
| "<<="
| "&="
| "|="
| "^="
AssignmentExpression:
(VariableReference AssignmentOperator)* ConditionalExpression
SequenceOperator:
","
SequenceExpression:
AssignmentExpression (SequenceOperator AssignmentExpression)*
Expression:
SequenceExpression
|
|