blob: 9d116004a5230f5a128a825fb3d25e3a1c7fe1b2 (
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
76
77
78
79
80
81
82
83
84
85
86
87
88
|
# Syntax (old)
### Statements
```PEG
AssignmentStatement ← AssignmentStatementBody ';'
AssignmentStatementBody ← AssignmentTargetExpression '=' Expression /
AssignmentTargetExpression '+=' Expression /
AssignmentTargetExpression '-=' Expression /
AssignmentTargetExpression '*=' Expression /
AssignmentTargetExpression '/=' Expression /
AssignmentTargetExpression '%=' Expression /
AssignmentTargetExpression '&=' Expression /
AssignmentTargetExpression '^=' Expression /
AssignmentTargetExpression '|=' Expression /
AssignmentTargetExpression '++' /
AssignmentTargetExpression '--'
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
```
|