blob: 083103c2d584a98adfbb25ba4d5af42320494fa5 (
plain)
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
|
# Syntax (old)
### Statements
```PEG
ExpressionStatement ← Expression ';'
```
### Expressions
```PEG
AssignmentTargetExpression ← identifier ATEElementSuffix*
ATEElementSuffix ← '[' Expression ']' /
'.' identifier /
'->' identifier
AtomicExpression ← identifier /
constant /
string-literal /
'(' Expression ')'
ObjectExpression ← AtomicExpression ObjectSuffix* /
ArrayLiteralExpression /
StructLiteralExpression
ObjectSuffix ← '[' Expression ']' /
'(' CommasExpressionList? ')' /
'.' identifier /
'->' identifier
CommasExpressionList ← Expression ',' CommasExpressionList? /
Expression ','?
ArrayLiteralExpression ← '{' CommasExpressionList '}'
StructLiteralExpression ← '{' StructLiteralBody '}'
StructLiteralBody ← StructLiteralElement ',' StructLiteralBody? /
StructLiteralElement ','?
StructLiteralElement ← '.' identifier '=' Expression
FactorExpression ← '(' Type ')' FactorExpression /
'&' FactorExpression /
'*' FactorExpression /
'+' FactorExpression /
'-' FactorExpression /
'~' FactorExpression /
'!' FactorExpression /
'sizeof' FactorExpression /
'sizeof' Type /
ObjectExpression
TermExpression ← FactorExpression TermSuffix*
TermSuffix ← '*' FactorExpression /
'/' FactorExpression /
'%' FactorExpression
ArithmeticExpression ← TermExpression ArithmeticSuffix*
ArithmeticSuffix ← '+' TermExpression /
'-' TermExpression
BitwiseOpExpression ← ArithmeticExpression '<<' ArithmeticExpression /
ArithmeticExpression '>>' ArithmeticExpression /
ArithmeticExpression '^' ArithmeticExpression /
ArithmeticExpression ('&' ArithmeticExpression)+ /
ArithmeticExpression ('|' ArithmeticExpression)+ /
ArithmeticExpression
ComparisonExpression ← BitwiseOpExpression '==' BitwiseOpExpression /
BitwiseOpExpression '!=' BitwiseOpExpression /
BitwiseOpExpression '<=' BitwiseOpExpression /
BitwiseOpExpression '>=' BitwiseOpExpression /
BitwiseOpExpression '<' BitwiseOpExpression /
BitwiseOpExpression '>' BitwiseOpExpression /
BitwiseOpExpression
Expression ← ComparisonExpression ('&&' ComparisonExpression)+ /
ComparisonExpression ('||' ComparisonExpression)+ /
ComparisonExpression
```
|