-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathenum.grammar
More file actions
43 lines (29 loc) · 1.57 KB
/
enum.grammar
File metadata and controls
43 lines (29 loc) · 1.57 KB
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
// A.2 - Expressions
EnumExpression[Yield, Await] :
DecoratorList[?Yield, ?Await]? `enum` BindingIdentifier[?Yield, ?Await]? EnumTail[?Yield, ?Await]
PrimaryExpression[Yield, Await] :
<ins>EnumExpression[?Yield, ?Await]</ins>
// A.3 - Statements
EnumDeclaration[Yield, Await, Default, Decorators] :
`enum` BindingIdentifier[?Yield, ?Await] EnumTail[?Yield, ?Await]
[+Default] `enum` EnumTail[?Yield, ?Await]
[+Decorators] DecoratorList[?Yield, ?Await] `enum` BindingIdentifier[?Yield, ?Await] EnumTail[?Yield, ?Await]
EnumTail[Yield, Await] :
EnumOfClause[?Yield, ?Await]? `{` EnumBody[?Yield, ?Await] `}`
EnumOfClause[Yield, Await] :
`of` LeftHandSideExpression[?Yield, ?Await]
EnumBody[Yield, Await] :
EnumElementList[?Yield, ?Await]
EnumElementList[?Yield, ?Await] `,`
EnumElementList[Yield, Await] :
EnumElement[?Yield, ?Await]
EnumElementList[?Yield, ?Await] `,` EnumElement[?Yield, ?Await]
EnumElement[Yield, Await] :
DecoratorList[?Yield, ?Await]? PropertyName[?Yield, ?Await] Initializer[+In, ?Yield, ?Await]?
Declaration[Yield, Await, Decorators] :
<ins>EnumDeclaration[?Yield, ?Await, ?Decorators]</ins>
// A.5 - Scripts and Modules
ExportDeclaration :
<ins>DecoratorList[~Yield, ~Await] `export` EnumDeclaration[~Yield, ~Await, +Default, ~Decorators]</ins>
<ins>DecoratorList[~Yield, ~Await]? `export` `default` EnumDeclaration[~Yield, ~Await, +Default, ~Decorators]</ins>
`export` `default` [lookahead ∉ { `function`, `async` [no LineTerminator here] `function`, `class`, `@`, <ins>`enum`</ins> }] AssignmentExpression[+In, ~Yield, ~Await] `;`