@ibyar/expressions 0.5.1 → 0.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +5 -4
- package/api/abstract.d.ts +5 -6
- package/api/abstract.js +3 -3
- package/api/abstract.js.map +1 -1
- package/api/class/class.d.ts +202 -0
- package/api/class/class.js +635 -0
- package/api/class/class.js.map +1 -0
- package/api/class/decorator.d.ts +20 -0
- package/api/class/decorator.js +48 -0
- package/api/class/decorator.js.map +1 -0
- package/api/computing/call.d.ts +3 -1
- package/api/computing/call.js +16 -4
- package/api/computing/call.js.map +1 -1
- package/api/computing/debugger.d.ts +15 -0
- package/api/computing/debugger.js +35 -0
- package/api/computing/debugger.js.map +1 -0
- package/api/computing/new.d.ts +2 -1
- package/api/computing/new.js +4 -0
- package/api/computing/new.js.map +1 -1
- package/api/computing/rest.d.ts +6 -6
- package/api/computing/rest.js +5 -2
- package/api/computing/rest.js.map +1 -1
- package/api/computing/return.d.ts +2 -1
- package/api/computing/return.js +3 -0
- package/api/computing/return.js.map +1 -1
- package/api/computing/spread.d.ts +2 -1
- package/api/computing/spread.js +5 -2
- package/api/computing/spread.js.map +1 -1
- package/api/computing/throw.d.ts +2 -1
- package/api/computing/throw.js +3 -0
- package/api/computing/throw.js.map +1 -1
- package/api/computing/yield.d.ts +2 -1
- package/api/computing/yield.js +3 -0
- package/api/computing/yield.js.map +1 -1
- package/api/definition/array.d.ts +12 -12
- package/api/definition/array.js +31 -25
- package/api/definition/array.js.map +1 -1
- package/api/definition/bind.d.ts +2 -2
- package/api/definition/bind.js +1 -1
- package/api/definition/bind.js.map +1 -1
- package/api/definition/function.d.ts +40 -51
- package/api/definition/function.js +291 -309
- package/api/definition/function.js.map +1 -1
- package/api/definition/member.d.ts +2 -2
- package/api/definition/member.js +1 -1
- package/api/definition/member.js.map +1 -1
- package/api/definition/object.d.ts +15 -12
- package/api/definition/object.js +43 -13
- package/api/definition/object.js.map +1 -1
- package/api/definition/statement.d.ts +2 -2
- package/api/definition/statement.js +7 -3
- package/api/definition/statement.js.map +1 -1
- package/api/definition/values.d.ts +35 -50
- package/api/definition/values.js +66 -149
- package/api/definition/values.js.map +1 -1
- package/api/deserialize/deserialize.d.ts +2 -1
- package/api/deserialize/deserialize.js +4 -1
- package/api/deserialize/deserialize.js.map +1 -1
- package/api/deserialize/type-store.d.ts +2 -2
- package/api/deserialize/type-store.js.map +1 -1
- package/api/expression.d.ts +13 -18
- package/api/expression.js.map +1 -1
- package/api/index.d.ts +2 -0
- package/api/index.js +2 -0
- package/api/index.js.map +1 -1
- package/api/module/common.d.ts +29 -0
- package/api/module/common.js +71 -0
- package/api/module/common.js.map +1 -0
- package/api/module/export.d.ts +66 -25
- package/api/module/export.js +270 -58
- package/api/module/export.js.map +1 -1
- package/api/module/import.d.ts +61 -25
- package/api/module/import.js +226 -68
- package/api/module/import.js.map +1 -1
- package/api/operators/assignment.d.ts +2 -2
- package/api/operators/assignment.js +1 -1
- package/api/operators/assignment.js.map +1 -1
- package/api/operators/await.d.ts +2 -2
- package/api/operators/await.js +1 -1
- package/api/operators/await.js.map +1 -1
- package/api/operators/binary.d.ts +2 -2
- package/api/operators/binary.js +1 -1
- package/api/operators/binary.js.map +1 -1
- package/api/operators/chaining.d.ts +2 -2
- package/api/operators/chaining.js +1 -1
- package/api/operators/chaining.js.map +1 -1
- package/api/operators/comma.d.ts +2 -2
- package/api/operators/comma.js +2 -2
- package/api/operators/comma.js.map +1 -1
- package/api/operators/grouping.d.ts +2 -2
- package/api/operators/grouping.js +1 -1
- package/api/operators/grouping.js.map +1 -1
- package/api/operators/logical.d.ts +2 -2
- package/api/operators/logical.js +1 -1
- package/api/operators/logical.js.map +1 -1
- package/api/operators/pipeline.d.ts +2 -2
- package/api/operators/pipeline.js +1 -1
- package/api/operators/pipeline.js.map +1 -1
- package/api/operators/ternary.d.ts +2 -2
- package/api/operators/ternary.js +1 -1
- package/api/operators/ternary.js.map +1 -1
- package/api/operators/unary.d.ts +3 -3
- package/api/operators/unary.js +4 -3
- package/api/operators/unary.js.map +1 -1
- package/api/operators/update.d.ts +2 -2
- package/api/operators/update.js +1 -1
- package/api/operators/update.js.map +1 -1
- package/api/{app/program.d.ts → program.d.ts} +8 -9
- package/api/program.js +45 -0
- package/api/program.js.map +1 -0
- package/api/statement/control/block.d.ts +4 -5
- package/api/statement/control/block.js +22 -23
- package/api/statement/control/block.js.map +1 -1
- package/api/statement/control/empty.d.ts +1 -1
- package/api/statement/control/empty.js.map +1 -1
- package/api/statement/control/if.d.ts +2 -2
- package/api/statement/control/if.js +1 -1
- package/api/statement/control/if.js.map +1 -1
- package/api/statement/control/switch.d.ts +4 -5
- package/api/statement/control/switch.js +13 -9
- package/api/statement/control/switch.js.map +1 -1
- package/api/statement/control/terminate.d.ts +38 -13
- package/api/statement/control/terminate.js +81 -20
- package/api/statement/control/terminate.js.map +1 -1
- package/api/statement/declarations/declares.d.ts +17 -16
- package/api/statement/declarations/declares.js +24 -19
- package/api/statement/declarations/declares.js.map +1 -1
- package/api/statement/iterations/for.d.ts +5 -5
- package/api/statement/iterations/for.js +29 -23
- package/api/statement/iterations/for.js.map +1 -1
- package/api/statement/iterations/while.d.ts +3 -3
- package/api/statement/iterations/while.js +17 -13
- package/api/statement/iterations/while.js.map +1 -1
- package/api/utils.d.ts +5 -0
- package/api/utils.js +4 -0
- package/api/utils.js.map +1 -0
- package/package.json +5 -5
- package/scope/event.d.ts +2 -2
- package/scope/event.js +8 -14
- package/scope/event.js.map +1 -1
- package/scope/finalizer.d.ts +4 -0
- package/scope/finalizer.js +11 -0
- package/scope/finalizer.js.map +1 -0
- package/scope/proxy.d.ts +2 -3
- package/scope/proxy.js +22 -26
- package/scope/proxy.js.map +1 -1
- package/scope/scope.d.ts +42 -53
- package/scope/scope.js +73 -143
- package/scope/scope.js.map +1 -1
- package/scope/stack.d.ts +43 -26
- package/scope/stack.js +148 -102
- package/scope/stack.js.map +1 -1
- package/v8/enums.d.ts +204 -0
- package/v8/enums.js +375 -0
- package/v8/enums.js.map +1 -0
- package/v8/index.d.ts +2 -1
- package/v8/index.js +2 -1
- package/v8/index.js.map +1 -1
- package/v8/inline.d.ts +177 -0
- package/v8/inline.js +1973 -0
- package/v8/inline.js.map +1 -0
- package/v8/nodes.d.ts +8 -7
- package/v8/nodes.js +37 -63
- package/v8/nodes.js.map +1 -1
- package/v8/parser.d.ts +41 -151
- package/v8/parser.js +507 -1578
- package/v8/parser.js.map +1 -1
- package/v8/stream.d.ts +35 -3
- package/v8/stream.js +616 -164
- package/v8/stream.js.map +1 -1
- package/v8/token.d.ts +15 -9
- package/v8/token.js +79 -46
- package/v8/token.js.map +1 -1
- package/visit/visitor.js +4 -7
- package/visit/visitor.js.map +1 -1
- package/api/app/class.d.ts +0 -117
- package/api/app/class.js +0 -292
- package/api/app/class.js.map +0 -1
- package/api/app/program.js +0 -39
- package/api/app/program.js.map +0 -1
- package/api/module/module.d.ts +0 -26
- package/api/module/module.js +0 -63
- package/api/module/module.js.map +0 -1
- package/v8/app.d.ts +0 -0
- package/v8/app.js +0 -2
- package/v8/app.js.map +0 -1
package/v8/token.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isSloppy } from './enums.js';
|
|
1
2
|
export class Token {
|
|
2
3
|
constructor(name, precedence) {
|
|
3
4
|
this.name = name;
|
|
@@ -5,12 +6,12 @@ export class Token {
|
|
|
5
6
|
}
|
|
6
7
|
static isPair(token) {
|
|
7
8
|
switch (token) {
|
|
8
|
-
case Token.
|
|
9
|
-
case Token.
|
|
10
|
-
case Token.
|
|
11
|
-
case Token.
|
|
12
|
-
case Token.
|
|
13
|
-
case Token.
|
|
9
|
+
case Token.LPAREN:
|
|
10
|
+
case Token.LBRACK:
|
|
11
|
+
case Token.LBRACE:
|
|
12
|
+
case Token.RBRACE:
|
|
13
|
+
case Token.RBRACK:
|
|
14
|
+
case Token.RPAREN:
|
|
14
15
|
return true;
|
|
15
16
|
default:
|
|
16
17
|
return false;
|
|
@@ -18,9 +19,9 @@ export class Token {
|
|
|
18
19
|
}
|
|
19
20
|
static isOpenPair(token) {
|
|
20
21
|
switch (token) {
|
|
21
|
-
case Token.
|
|
22
|
-
case Token.
|
|
23
|
-
case Token.
|
|
22
|
+
case Token.LPAREN:
|
|
23
|
+
case Token.LBRACK:
|
|
24
|
+
case Token.LBRACE:
|
|
24
25
|
return true;
|
|
25
26
|
default:
|
|
26
27
|
return false;
|
|
@@ -28,9 +29,9 @@ export class Token {
|
|
|
28
29
|
}
|
|
29
30
|
static isClosePair(token) {
|
|
30
31
|
switch (token) {
|
|
31
|
-
case Token.
|
|
32
|
-
case Token.
|
|
33
|
-
case Token.
|
|
32
|
+
case Token.RBRACE:
|
|
33
|
+
case Token.RBRACK:
|
|
34
|
+
case Token.RPAREN:
|
|
34
35
|
return true;
|
|
35
36
|
default:
|
|
36
37
|
return false;
|
|
@@ -38,23 +39,23 @@ export class Token {
|
|
|
38
39
|
}
|
|
39
40
|
static openOf(token) {
|
|
40
41
|
switch (token) {
|
|
41
|
-
case Token.
|
|
42
|
-
return Token.
|
|
43
|
-
case Token.
|
|
44
|
-
return Token.
|
|
45
|
-
case Token.
|
|
46
|
-
return Token.
|
|
42
|
+
case Token.RBRACE:
|
|
43
|
+
return Token.LBRACE;
|
|
44
|
+
case Token.RBRACK:
|
|
45
|
+
return Token.LBRACK;
|
|
46
|
+
case Token.RPAREN:
|
|
47
|
+
return Token.LPAREN;
|
|
47
48
|
}
|
|
48
49
|
return token;
|
|
49
50
|
}
|
|
50
51
|
static closeOf(token) {
|
|
51
52
|
switch (token) {
|
|
52
|
-
case Token.
|
|
53
|
-
return Token.
|
|
54
|
-
case Token.
|
|
55
|
-
return Token.
|
|
56
|
-
case Token.
|
|
57
|
-
return Token.
|
|
53
|
+
case Token.LBRACE:
|
|
54
|
+
return Token.RBRACE;
|
|
55
|
+
case Token.LBRACK:
|
|
56
|
+
return Token.RBRACK;
|
|
57
|
+
case Token.LPAREN:
|
|
58
|
+
return Token.RPAREN;
|
|
58
59
|
}
|
|
59
60
|
return token;
|
|
60
61
|
}
|
|
@@ -134,7 +135,7 @@ export class Token {
|
|
|
134
135
|
static isAutoSemicolon(token) {
|
|
135
136
|
switch (token) {
|
|
136
137
|
case Token.SEMICOLON:
|
|
137
|
-
case Token.
|
|
138
|
+
case Token.RBRACE:
|
|
138
139
|
case Token.EOS:
|
|
139
140
|
return true;
|
|
140
141
|
}
|
|
@@ -142,24 +143,26 @@ export class Token {
|
|
|
142
143
|
}
|
|
143
144
|
static isMember(token) {
|
|
144
145
|
switch (token) {
|
|
145
|
-
case Token.
|
|
146
|
+
case Token.TEMPLATE_SPAN:
|
|
147
|
+
case Token.TEMPLATE_TAIL:
|
|
146
148
|
case Token.PERIOD:
|
|
147
|
-
case Token.
|
|
149
|
+
case Token.LBRACK:
|
|
148
150
|
return true;
|
|
149
151
|
}
|
|
150
152
|
return false;
|
|
151
153
|
}
|
|
152
154
|
static isTemplate(token) {
|
|
153
155
|
switch (token) {
|
|
154
|
-
case Token.
|
|
156
|
+
case Token.TEMPLATE_SPAN:
|
|
157
|
+
case Token.TEMPLATE_TAIL:
|
|
155
158
|
return true;
|
|
156
159
|
}
|
|
157
160
|
return false;
|
|
158
161
|
}
|
|
159
162
|
static isNextLetKeyword(token) {
|
|
160
163
|
switch (token) {
|
|
161
|
-
case Token.
|
|
162
|
-
case Token.
|
|
164
|
+
case Token.LBRACE:
|
|
165
|
+
case Token.LBRACK:
|
|
163
166
|
case Token.IDENTIFIER:
|
|
164
167
|
case Token.STATIC:
|
|
165
168
|
case Token.LET:
|
|
@@ -173,13 +176,25 @@ export class Token {
|
|
|
173
176
|
return false;
|
|
174
177
|
}
|
|
175
178
|
}
|
|
179
|
+
static isInRangeIdentifierAndAsync(token) {
|
|
180
|
+
switch (token) {
|
|
181
|
+
case Token.IDENTIFIER:
|
|
182
|
+
case Token.GET:
|
|
183
|
+
case Token.SET:
|
|
184
|
+
case Token.ASYNC:
|
|
185
|
+
return true;
|
|
186
|
+
default:
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
176
190
|
static isPropertyOrCall(token) {
|
|
177
191
|
switch (token) {
|
|
178
|
-
case Token.
|
|
192
|
+
case Token.TEMPLATE_SPAN:
|
|
193
|
+
case Token.TEMPLATE_TAIL:
|
|
179
194
|
case Token.PERIOD:
|
|
180
|
-
case Token.
|
|
195
|
+
case Token.LBRACK:
|
|
181
196
|
case Token.QUESTION_PERIOD:
|
|
182
|
-
case Token.
|
|
197
|
+
case Token.LPAREN:
|
|
183
198
|
return true;
|
|
184
199
|
}
|
|
185
200
|
return false;
|
|
@@ -190,6 +205,12 @@ export class Token {
|
|
|
190
205
|
static isInRange(op, start, end) {
|
|
191
206
|
return op >= start.precedence && op <= end.precedence;
|
|
192
207
|
}
|
|
208
|
+
static isProperty(token) {
|
|
209
|
+
if (token instanceof Token) {
|
|
210
|
+
token = token.precedence;
|
|
211
|
+
}
|
|
212
|
+
return Token.isInRange(token, Token.PERIOD, Token.LBRACK);
|
|
213
|
+
}
|
|
193
214
|
static isBinary(token) {
|
|
194
215
|
if (token instanceof Token) {
|
|
195
216
|
token = token.precedence;
|
|
@@ -320,12 +341,20 @@ export class Token {
|
|
|
320
341
|
}
|
|
321
342
|
return false;
|
|
322
343
|
}
|
|
323
|
-
static isValidIdentifier(token) {
|
|
324
|
-
if (Token.
|
|
344
|
+
static isValidIdentifier(token, mode, isGenerator, disallowAwait) {
|
|
345
|
+
if (Token.isInRangeIdentifierAndAsync(token))
|
|
325
346
|
return true;
|
|
326
|
-
if (token == Token.AWAIT
|
|
327
|
-
return
|
|
328
|
-
|
|
347
|
+
if (token == Token.AWAIT)
|
|
348
|
+
return !disallowAwait;
|
|
349
|
+
if (token == Token.YIELD)
|
|
350
|
+
return !isGenerator;
|
|
351
|
+
return Token.isStrictReservedWord(token) && isSloppy(mode);
|
|
352
|
+
}
|
|
353
|
+
static precedence(token, acceptIN) {
|
|
354
|
+
if (!acceptIN && Token.IN === token) {
|
|
355
|
+
return 0;
|
|
356
|
+
}
|
|
357
|
+
return token.getPrecedence();
|
|
329
358
|
}
|
|
330
359
|
getName() {
|
|
331
360
|
return this.name;
|
|
@@ -333,6 +362,9 @@ export class Token {
|
|
|
333
362
|
getPrecedence() {
|
|
334
363
|
return this.precedence;
|
|
335
364
|
}
|
|
365
|
+
equal(token) {
|
|
366
|
+
return this === token || this.name === token.name;
|
|
367
|
+
}
|
|
336
368
|
}
|
|
337
369
|
Token.CONDITIONAL = new Token('?', 3);
|
|
338
370
|
Token.NULLISH = new Token('??', 3);
|
|
@@ -390,12 +422,12 @@ Token.PERIOD = new Token('.', 0);
|
|
|
390
422
|
Token.QUESTION_PERIOD = new Token('?.', 0);
|
|
391
423
|
Token.BIND = new Token('::', 0);
|
|
392
424
|
Token.QUESTION_BIND = new Token('?::', 0);
|
|
393
|
-
Token.
|
|
394
|
-
Token.
|
|
395
|
-
Token.
|
|
396
|
-
Token.
|
|
397
|
-
Token.
|
|
398
|
-
Token.
|
|
425
|
+
Token.LPAREN = new Token('(', 0);
|
|
426
|
+
Token.RPAREN = new Token(')', 0);
|
|
427
|
+
Token.LBRACK = new Token('[', 0);
|
|
428
|
+
Token.RBRACK = new Token(']', 0);
|
|
429
|
+
Token.LBRACE = new Token('{', 0);
|
|
430
|
+
Token.RBRACE = new Token('}', 0);
|
|
399
431
|
Token.COLON = new Token(':', 0);
|
|
400
432
|
Token.ELLIPSIS = new Token('...', 0);
|
|
401
433
|
Token.SEMICOLON = new Token(';', 0);
|
|
@@ -456,7 +488,8 @@ Token.NUMBER = new Token('NUMBER', 0);
|
|
|
456
488
|
Token.BIGINT = new Token('BIGINT', 0);
|
|
457
489
|
Token.STRING = new Token('STRING', 0);
|
|
458
490
|
Token.IDENTIFIER = new Token('IDENTIFIER', 0);
|
|
459
|
-
Token.
|
|
491
|
+
Token.TEMPLATE_SPAN = new Token('TEMPLATE_SPAN', 0);
|
|
492
|
+
Token.TEMPLATE_TAIL = new Token('TEMPLATE_TAIL', 0);
|
|
460
493
|
Token.ILLEGAL = new Token('ILLEGAL', 0);
|
|
461
494
|
Token.ESCAPED_KEYWORD = new Token('ESCAPED_KEYWORD', 0);
|
|
462
495
|
Token.WHITESPACE = new Token('WHITESPACE', 0);
|
|
@@ -476,7 +509,7 @@ export class TokenExpression {
|
|
|
476
509
|
return this.token !== type;
|
|
477
510
|
}
|
|
478
511
|
test(func) {
|
|
479
|
-
return func(this.token);
|
|
512
|
+
return func(this.token, this.value);
|
|
480
513
|
}
|
|
481
514
|
toString() {
|
|
482
515
|
return JSON.stringify(this);
|
package/v8/token.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/expressions/v8/token.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExpressionNode } from '../api/expression.js';\n\nexport class Token {\n\n\t/**\n\t * ___ ? ___ : ___\n\t */\n\tpublic static readonly CONDITIONAL = new Token('?', 3);\n\n\t/**\n\t * ___ ?? ___\n\t */\n\tpublic static readonly NULLISH = new Token('??', 3);\n\n\t/**\n\t * ___ |> ___ : ___ : ?\n\t * ___ |> ___ ( ___, ___ , ?)\n\t */\n\tpublic static readonly PIPELINE = new Token('|>', 3);\n\n\t/**\n\t * ___ || ___\n\t */\n\tpublic static readonly OR = new Token('||', 4);\n\n\t/**\n\t * ___ && ___\n\t */\n\tpublic static readonly AND = new Token('&&', 5);\n\n\t/**\n\t * ___ | ___\n\t */\n\tpublic static readonly BIT_OR = new Token('|', 6);\n\n\t/**\n\t * ___ ^ ___\n\t */\n\tpublic static readonly BIT_XOR = new Token('^', 7);\n\n\t/**\n\t * ___ | ___\n\t */\n\tpublic static readonly BIT_AND = new Token('&', 8);\n\n\t/**\n\t * ___ << ___\n\t */\n\tpublic static readonly SHL = new Token('<<', 11);\n\n\t/**\n\t * ___ >> ___\n\t */\n\tpublic static readonly SAR = new Token('>>', 11);\n\n\t/**\n\t * ___ >>> ___\n\t */\n\tpublic static readonly SHR = new Token('>>>', 11);\n\n\t/**\n\t * ___ * ___\n\t */\n\tpublic static readonly MUL = new Token('*', 13);\n\n\t/**\n\t * ___ / ___\n\t */\n\tpublic static readonly DIV = new Token('/', 13);\n\n\t/**\n\t * ___ % ___\n\t */\n\tpublic static readonly MOD = new Token('%', 13);\n\n\t/**\n\t * ___ %% ___\n\t */\n\tpublic static readonly MODULO = new Token('%%', 13);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly LARGER = new Token('>?', 13);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly SMALLER = new Token('<?', 13);\n\n\t/**\n\t * ___ ** ___\n\t */\n\tpublic static readonly EXP = new Token('**', 14);\n\n\t/**\n\t * ___ + ___\n\t */\n\tpublic static readonly ADD = new Token('+', 12);\n\n\t/**\n\t * ___ - ___\n\t */\n\tpublic static readonly SUB = new Token('-', 12);\n\n\t/**\n\t * ! ___\n\t */\n\tpublic static readonly NOT = new Token('!', 0);\n\n\t/**\n\t * ~ ___\n\t */\n\tpublic static readonly BIT_NOT = new Token('~', 0);\n\n\t/**\n\t * ___ < ___\n\t */\n\tpublic static readonly LT = new Token('<', 10);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly GT = new Token('>', 10);\n\n\t/**\n\t * ___++\n\t * \n\t * ++___\n\t */\n\tpublic static readonly INC = new Token('++', 0);\n\n\t/**\n\t * ___--\n\t * \n\t * --___\n\t */\n\tpublic static readonly DEC = new Token('--', 0);\n\n\t/**\n\t * ___ == ___\n\t */\n\tpublic static readonly EQ = new Token('==', 9);\n\n\t/**\n\t * ___ === ___\n\t */\n\tpublic static readonly EQ_STRICT = new Token('===', 9);\n\n\t/**\n\t * ___ != ___\n\t */\n\tpublic static readonly NE = new Token('!=', 9);\n\n\t/**\n\t * ___ !== ___\n\t */\n\tpublic static readonly NE_STRICT = new Token('!==', 9);\n\n\t/**\n\t * ___ <= ___\n\t */\n\tpublic static readonly LTE = new Token('<=', 10);\n\n\t/**\n\t * ___ >= ___\n\t */\n\tpublic static readonly GTE = new Token('>=', 10);\n\n\t/**\n\t * ___ <=> ___\n\t */\n\tpublic static readonly SPACESHIP = new Token('<=>', 10);\n\n\t/**\n\t * ___ = ___\n\t */\n\tpublic static readonly ASSIGN = new Token('=', 2);\n\n\t/**\n\t * ___ += ___\n\t */\n\tpublic static readonly ADD_ASSIGN = new Token('+=', 2);\n\n\t/**\n\t * ___ -= ___\n\t */\n\tpublic static readonly SUB_ASSIGN = new Token('-=', 2);\n\n\t/**\n\t * ___ *= ___\n\t */\n\tpublic static readonly MUL_ASSIGN = new Token('*=', 2);\n\n\t/**\n\t * ___ /= ___\n\t */\n\tpublic static readonly DIV_ASSIGN = new Token('/=', 2);\n\n\t/**\n\t * ___ %= ___\n\t */\n\tpublic static readonly MOD_ASSIGN = new Token('%=', 2);\n\n\t/**\n\t * ___ %% ___\n\t */\n\tpublic static readonly MODULO_ASSIGN = new Token('%%=', 2);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly LARGER_ASSIGN = new Token('>?=', 2);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly SMALLER_ASSIGN = new Token('<?=', 2);\n\n\t/**\n\t * ___ **= ___\n\t */\n\tpublic static readonly EXP_ASSIGN = new Token('**=', 2);\n\n\t/**\n\t * ___ ^= ___\n\t */\n\tpublic static readonly BIT_XOR_ASSIGN = new Token('^=', 2);\n\n\t/**\n\t * ___ &= ___\n\t */\n\tpublic static readonly BIT_AND_ASSIGN = new Token('&=', 2);\n\n\t/**\n\t * ___ |= ___\n\t */\n\tpublic static readonly BIT_OR_ASSIGN = new Token('|=', 2);\n\n\t/**\n\t * ___ &&= ___\n\t */\n\tpublic static readonly AND_ASSIGN = new Token('&&=', 2);\n\n\t/**\n\t * ___ ||= ___\n\t */\n\tpublic static readonly OR_ASSIGN = new Token('||=', 2);\n\n\t/**\n\t * ___ ??= ___\n\t */\n\tpublic static readonly NULLISH_ASSIGN = new Token('??=', 2);\n\n\t/**\n\t * ___ <<= ___\n\t */\n\tpublic static readonly SHL_ASSIGN = new Token('<<=', 2);\n\n\t/**\n\t * ___ >>= ___\n\t */\n\tpublic static readonly SAR_ASSIGN = new Token('>>=', 2);\n\n\t/**\n\t * ___ >>>= ___\n\t */\n\tpublic static readonly SHR_ASSIGN = new Token('>>>=', 2);\n\n\t/**\n\t * ___ . ___\n\t */\n\tpublic static readonly PERIOD = new Token('.', 0);\n\n\t/**\n\t * ___ ?. ___\n\t * \n\t * ___?.[___]\n\t * \n\t * ___?.()\n\t */\n\tpublic static readonly QUESTION_PERIOD = new Token('?.', 0);\n\n\t/**\n\t * ___ :: ___\n\t */\n\tpublic static readonly BIND = new Token('::', 0);\n\n\t/**\n\t * ___ ?:: ___\n\t * \n\t * ___?::[___]\n\t * \n\t * ___?::()\n\t */\n\tpublic static readonly QUESTION_BIND = new Token('?::', 0);\n\n\t/**\n\t * (\n\t */\n\tpublic static readonly L_PARENTHESES = new Token('(', 0);\n\n\t/**\n\t * )\n\t */\n\tpublic static readonly R_PARENTHESES = new Token(')', 0);\n\n\t/**\n\t * [\n\t */\n\tpublic static readonly L_BRACKETS = new Token('[', 0);\n\n\t/**\n\t * ]\n\t */\n\tpublic static readonly R_BRACKETS = new Token(']', 0);\n\n\t/**\n\t * {\n\t */\n\tpublic static readonly L_CURLY = new Token('{', 0);\n\n\t/**\n\t * }\n\t */\n\tpublic static readonly R_CURLY = new Token('}', 0);\n\n\t/**\n\t * :\n\t */\n\tpublic static readonly COLON = new Token(':', 0);\n\n\t/**\n\t * ...\n\t */\n\tpublic static readonly ELLIPSIS = new Token('...', 0);\n\n\t/**\n\t * ;\n\t */\n\tpublic static readonly SEMICOLON = new Token(';', 0);\n\n\t/**\n\t * end of source\n\t */\n\tpublic static readonly EOS = new Token('EOS', 0);\n\n\t/**\n\t * =>\n\t */\n\tpublic static readonly ARROW = new Token('=>', 0);\n\n\t/**\n\t * ___, ___, ___\n\t */\n\tpublic static readonly COMMA = new Token(',', 1);\n\tpublic static readonly ASYNC = new Token('async', 0);\n\tpublic static readonly AWAIT = new Token('await', 0);\n\tpublic static readonly BREAK = new Token('break', 0);\n\tpublic static readonly CASE = new Token('case', 0);\n\tpublic static readonly CATCH = new Token('catch', 0);\n\tpublic static readonly CLASS = new Token('class', 0);\n\tpublic static readonly CONST = new Token('const', 0);\n\tpublic static readonly CONTINUE = new Token('continue', 0);\n\tpublic static readonly DEBUGGER = new Token('debugger', 0);\n\tpublic static readonly DEFAULT = new Token('default', 0);\n\tpublic static readonly DELETE = new Token('delete', 0);\n\tpublic static readonly DO = new Token('do', 0);\n\tpublic static readonly ELSE = new Token('else', 0);\n\tpublic static readonly ENUM = new Token('enum', 0);\n\tpublic static readonly EXPORT = new Token('export', 0);\n\tpublic static readonly EXTENDS = new Token('extends', 0);\n\tpublic static readonly FALSE_LITERAL = new Token('false', 0);\n\tpublic static readonly FINALLY = new Token('finally', 0);\n\tpublic static readonly FOR = new Token('for', 0);\n\tpublic static readonly FUNCTION = new Token('function', 0);\n\tpublic static readonly GET = new Token('get', 0);\n\tpublic static readonly IF = new Token('if', 0);\n\tpublic static readonly IMPLEMENTS = new Token('implements', 0);\n\tpublic static readonly IMPORT = new Token('import', 0);\n\tpublic static readonly PRIVATE_NAME = new Token('PRIVATE_NAME', 0);\n\tpublic static readonly IN = new Token('in', 10);\n\tpublic static readonly INSTANCEOF = new Token('instanceof', 10);\n\tpublic static readonly LET = new Token('let', 0);\n\tpublic static readonly NEW = new Token('new', 0);\n\tpublic static readonly NULL_LITERAL = new Token('null', 0);\n\tpublic static readonly UNDEFINED_LITERAL = new Token('undefined', 0);\n\tpublic static readonly PACKAGE = new Token('package', 0);\n\tpublic static readonly INTERFACE = new Token('interface', 0);\n\tpublic static readonly PRIVATE = new Token('private', 0);\n\tpublic static readonly PROTECTED = new Token('protected', 0);\n\tpublic static readonly PUBLIC = new Token('public', 0);\n\tpublic static readonly RETURN = new Token('return', 0);\n\tpublic static readonly SET = new Token('set', 0);\n\tpublic static readonly STATIC = new Token('static', 0);\n\tpublic static readonly SUPER = new Token('super', 0);\n\tpublic static readonly SWITCH = new Token('switch', 0);\n\tpublic static readonly THIS = new Token('this', 0);\n\tpublic static readonly THROW = new Token('throw', 0);\n\tpublic static readonly TRUE_LITERAL = new Token('true', 0);\n\tpublic static readonly TRY = new Token('try', 0);\n\tpublic static readonly TYPEOF = new Token('typeof', 0);\n\tpublic static readonly VAR = new Token('var', 0);\n\tpublic static readonly VOID = new Token('void', 0);\n\tpublic static readonly WHILE = new Token('while', 0);\n\tpublic static readonly YIELD = new Token('yield', 0);\n\tpublic static readonly NUMBER = new Token('NUMBER', 0);\n\tpublic static readonly BIGINT = new Token('BIGINT', 0);\n\tpublic static readonly STRING = new Token('STRING', 0);\n\tpublic static readonly IDENTIFIER = new Token('IDENTIFIER', 0);\n\tpublic static readonly TEMPLATE_LITERALS = new Token('TEMPLATE_LITERALS', 0);\n\tpublic static readonly ILLEGAL = new Token('ILLEGAL', 0);\n\tpublic static readonly ESCAPED_KEYWORD = new Token('ESCAPED_KEYWORD', 0);\n\tpublic static readonly WHITESPACE = new Token('WHITESPACE', 0);\n\tpublic static readonly REGEXP_LITERAL = new Token('REGEXP_LITERAL', 0);\n\n\n\tpublic static isPair(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.L_PARENTHESES:\n\t\t\tcase Token.L_BRACKETS:\n\t\t\tcase Token.L_CURLY:\n\t\t\tcase Token.R_CURLY:\n\t\t\tcase Token.R_BRACKETS:\n\t\t\tcase Token.R_PARENTHESES:\n\t\t\t\treturn true;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\tpublic static isOpenPair(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.L_PARENTHESES:\n\t\t\tcase Token.L_BRACKETS:\n\t\t\tcase Token.L_CURLY:\n\t\t\t\treturn true;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\tpublic static isClosePair(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.R_CURLY:\n\t\t\tcase Token.R_BRACKETS:\n\t\t\tcase Token.R_PARENTHESES:\n\t\t\t\treturn true;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\tpublic static openOf(token: Token): Token {\n\t\tswitch (token) {\n\t\t\tcase Token.R_CURLY:\n\t\t\t\treturn Token.L_CURLY;\n\t\t\tcase Token.R_BRACKETS:\n\t\t\t\treturn Token.L_BRACKETS;\n\t\t\tcase Token.R_PARENTHESES:\n\t\t\t\treturn Token.L_PARENTHESES;\n\t\t}\n\t\treturn token;\n\t}\n\tpublic static closeOf(token: Token): Token {\n\t\tswitch (token) {\n\t\t\tcase Token.L_CURLY:\n\t\t\t\treturn Token.R_CURLY;\n\t\t\tcase Token.L_BRACKETS:\n\t\t\t\treturn Token.R_BRACKETS;\n\t\t\tcase Token.L_PARENTHESES:\n\t\t\t\treturn Token.R_PARENTHESES;\n\t\t}\n\t\treturn token;\n\t}\n\tpublic static isAnyIdentifier(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.IDENTIFIER:\n\t\t\tcase Token.GET:\n\t\t\tcase Token.SET:\n\t\t\tcase Token.ASYNC:\n\t\t\tcase Token.AWAIT:\n\t\t\tcase Token.YIELD:\n\t\t\tcase Token.LET:\n\t\t\tcase Token.STATIC:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isIdentifier(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.IDENTIFIER:\n\t\t\tcase Token.GET:\n\t\t\tcase Token.SET:\n\t\t\tcase Token.ASYNC:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isLiteral(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.UNDEFINED_LITERAL:\n\t\t\tcase Token.NULL_LITERAL:\n\t\t\tcase Token.TRUE_LITERAL:\n\t\t\tcase Token.FALSE_LITERAL:\n\t\t\tcase Token.NUMBER:\n\t\t\tcase Token.BIGINT:\n\t\t\tcase Token.STRING:\n\t\t\tcase Token.REGEXP_LITERAL:\n\t\t\t\t// case Token.SMI:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isArrowOrAssignmentOp(token: Token) {\n\t\treturn token === Token.ARROW || this.isAssignment(token);\n\t}\n\tpublic static isAssignment(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.ASSIGN:\n\t\t\tcase Token.ADD_ASSIGN:\n\t\t\tcase Token.SUB_ASSIGN:\n\t\t\tcase Token.MUL_ASSIGN:\n\t\t\tcase Token.DIV_ASSIGN:\n\t\t\tcase Token.MOD_ASSIGN:\n\t\t\tcase Token.MODULO_ASSIGN:\n\t\t\tcase Token.EXP_ASSIGN:\n\t\t\tcase Token.BIT_XOR_ASSIGN:\n\t\t\tcase Token.BIT_AND_ASSIGN:\n\t\t\tcase Token.BIT_OR_ASSIGN:\n\t\t\tcase Token.AND_ASSIGN:\n\t\t\tcase Token.OR_ASSIGN:\n\t\t\tcase Token.NULLISH_ASSIGN:\n\t\t\tcase Token.SHL_ASSIGN:\n\t\t\tcase Token.SAR_ASSIGN:\n\t\t\tcase Token.SHR_ASSIGN:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isLogicalAssignmentOp(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.AND_ASSIGN:\n\t\t\tcase Token.OR_ASSIGN:\n\t\t\tcase Token.NULLISH_ASSIGN:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isAutoSemicolon(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.SEMICOLON:\n\t\t\tcase Token.R_CURLY:\n\t\t\tcase Token.EOS:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isMember(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.TEMPLATE_LITERALS:\n\t\t\tcase Token.PERIOD:\n\t\t\tcase Token.L_BRACKETS:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isTemplate(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.TEMPLATE_LITERALS:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isNextLetKeyword(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.L_CURLY:\n\t\t\tcase Token.L_BRACKETS:\n\t\t\tcase Token.IDENTIFIER:\n\t\t\tcase Token.STATIC:\n\t\t\tcase Token.LET: // `let let;` is disallowed by static semantics, but the\n\t\t\t// token must be first interpreted as a keyword in order\n\t\t\t// for those semantics to apply. This ensures that ASI is\n\t\t\t// not honored when a LineTerminator separates the tokens.\n\t\t\tcase Token.YIELD:\n\t\t\tcase Token.AWAIT:\n\t\t\tcase Token.GET:\n\t\t\tcase Token.SET:\n\t\t\tcase Token.ASYNC:\n\t\t\t\treturn true;\n\t\t\t// case Token.FUTURE_STRICT_RESERVED_WORD:\n\t\t\t// return is_sloppy(language_mode());\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\tpublic static isPropertyOrCall(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.TEMPLATE_LITERALS:\n\t\t\tcase Token.PERIOD:\n\t\t\tcase Token.L_BRACKETS:\n\t\t\tcase Token.QUESTION_PERIOD:\n\t\t\tcase Token.L_PARENTHESES:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isPropertyName(token: Token) {\n\t\treturn /\\w/.test(token.getName());\n\t}\n\tprivate static isInRange(op: number, start: Token, end: Token) {\n\t\treturn op >= start.precedence && op <= end.precedence;\n\t}\n\tpublic static isBinary(token: number | Token) {\n\t\tif (token instanceof Token) {\n\t\t\ttoken = token.precedence;\n\t\t}\n\t\treturn Token.isInRange(token, Token.COMMA, Token.SUB);\n\t}\n\n\tpublic static isCompare(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.EQ:\n\t\t\tcase Token.EQ_STRICT:\n\t\t\tcase Token.NE:\n\t\t\tcase Token.NE_STRICT:\n\t\t\tcase Token.LT:\n\t\t\tcase Token.GT:\n\t\t\tcase Token.LTE:\n\t\t\tcase Token.GTE:\n\t\t\tcase Token.SPACESHIP:\n\t\t\tcase Token.INSTANCEOF:\n\t\t\tcase Token.IN:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isOrderedRelationalCompare(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.LT:\n\t\t\tcase Token.GT:\n\t\t\tcase Token.LTE:\n\t\t\tcase Token.GTE:\n\t\t\tcase Token.SPACESHIP:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isEquality(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.EQ:\n\t\t\tcase Token.EQ_STRICT:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static binaryOpForAssignment(token: Token) {\n\t\tif (Token.isInRange(token.precedence, Token.NULLISH_ASSIGN, Token.SUB_ASSIGN)) {\n\t\t\tconst result = token.precedence - Token.NULLISH_ASSIGN.precedence + Token.NULLISH.precedence;\n\t\t\treturn Token.isBinary(result);\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isBitOp(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.BIT_NOT:\n\t\t\tcase Token.BIT_OR:\n\t\t\tcase Token.BIT_XOR:\n\t\t\tcase Token.BIT_AND:\n\t\t\tcase Token.SHL:\n\t\t\tcase Token.SAR:\n\t\t\tcase Token.SHR:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isUnary(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.ADD:\n\t\t\tcase Token.SUB:\n\t\t\tcase Token.NOT:\n\t\t\tcase Token.BIT_NOT:\n\t\t\tcase Token.DELETE:\n\t\t\tcase Token.AWAIT:\n\t\t\tcase Token.TYPEOF:\n\t\t\tcase Token.VOID:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isCount(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.INC:\n\t\t\tcase Token.DEC:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isUnaryOrCount(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.ADD:\n\t\t\tcase Token.SUB:\n\t\t\tcase Token.INC:\n\t\t\tcase Token.DEC:\n\t\t\tcase Token.NOT:\n\t\t\tcase Token.BIT_NOT:\n\t\t\tcase Token.DELETE:\n\t\t\tcase Token.AWAIT:\n\t\t\tcase Token.TYPEOF:\n\t\t\tcase Token.VOID:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isShift(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.SHL:\n\t\t\tcase Token.SAR:\n\t\t\tcase Token.SHR:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isStrictReservedWord(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.IMPLEMENTS:\n\t\t\tcase Token.INTERFACE:\n\t\t\tcase Token.LET:\n\t\t\tcase Token.PACKAGE:\n\t\t\tcase Token.PRIVATE:\n\t\t\tcase Token.PROTECTED:\n\t\t\tcase Token.PUBLIC:\n\t\t\tcase Token.STATIC:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isPipelineOperator(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.PIPELINE:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isValidIdentifier(token: Token) {\n\t\tif (Token.isInRange(token.precedence, Token.IDENTIFIER, Token.ASYNC)) return true;\n\t\tif (token == Token.AWAIT || token == Token.YIELD) return false;\n\t\treturn Token.isStrictReservedWord(token) && false;\n\t}\n\n\tconstructor(private name: string, private precedence: number) { }\n\tgetName() {\n\t\treturn this.name;\n\t}\n\tgetPrecedence() {\n\t\treturn this.precedence;\n\t}\n}\n\nexport class TokenExpression {\n\tconstructor(public token: Token, public value?: ExpressionNode) { }\n\tgetValue<T extends ExpressionNode>(): T {\n\t\treturn this.value! as T;\n\t}\n\tisType(type: Token) {\n\t\treturn this.token === type;\n\t}\n\tisNotType(type: Token) {\n\t\treturn this.token !== type;\n\t}\n\n\ttest(func: (token: Token) => boolean): boolean {\n\t\treturn func(this.token);\n\t}\n\ttoString(): string {\n\t\treturn JSON.stringify(this);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/expressions/v8/token.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExpressionNode } from '../api/expression.js';\nimport { isSloppy, LanguageMode } from './enums.js';\n\nexport class Token {\n\n\t/**\n\t * ___ ? ___ : ___\n\t */\n\tpublic static readonly CONDITIONAL = new Token('?', 3);\n\n\t/**\n\t * ___ ?? ___\n\t */\n\tpublic static readonly NULLISH = new Token('??', 3);\n\n\t/**\n\t * ___ |> ___ : ___ : ?\n\t * ___ |> ___ ( ___, ___ , ?)\n\t */\n\tpublic static readonly PIPELINE = new Token('|>', 3);\n\n\t/**\n\t * ___ || ___\n\t */\n\tpublic static readonly OR = new Token('||', 4);\n\n\t/**\n\t * ___ && ___\n\t */\n\tpublic static readonly AND = new Token('&&', 5);\n\n\t/**\n\t * ___ | ___\n\t */\n\tpublic static readonly BIT_OR = new Token('|', 6);\n\n\t/**\n\t * ___ ^ ___\n\t */\n\tpublic static readonly BIT_XOR = new Token('^', 7);\n\n\t/**\n\t * ___ | ___\n\t */\n\tpublic static readonly BIT_AND = new Token('&', 8);\n\n\t/**\n\t * ___ << ___\n\t */\n\tpublic static readonly SHL = new Token('<<', 11);\n\n\t/**\n\t * ___ >> ___\n\t */\n\tpublic static readonly SAR = new Token('>>', 11);\n\n\t/**\n\t * ___ >>> ___\n\t */\n\tpublic static readonly SHR = new Token('>>>', 11);\n\n\t/**\n\t * ___ * ___\n\t */\n\tpublic static readonly MUL = new Token('*', 13);\n\n\t/**\n\t * ___ / ___\n\t */\n\tpublic static readonly DIV = new Token('/', 13);\n\n\t/**\n\t * ___ % ___\n\t */\n\tpublic static readonly MOD = new Token('%', 13);\n\n\t/**\n\t * ___ %% ___\n\t */\n\tpublic static readonly MODULO = new Token('%%', 13);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly LARGER = new Token('>?', 13);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly SMALLER = new Token('<?', 13);\n\n\t/**\n\t * ___ ** ___\n\t */\n\tpublic static readonly EXP = new Token('**', 14);\n\n\t/**\n\t * ___ + ___\n\t */\n\tpublic static readonly ADD = new Token('+', 12);\n\n\t/**\n\t * ___ - ___\n\t */\n\tpublic static readonly SUB = new Token('-', 12);\n\n\t/**\n\t * ! ___\n\t */\n\tpublic static readonly NOT = new Token('!', 0);\n\n\t/**\n\t * ~ ___\n\t */\n\tpublic static readonly BIT_NOT = new Token('~', 0);\n\n\t/**\n\t * ___ < ___\n\t */\n\tpublic static readonly LT = new Token('<', 10);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly GT = new Token('>', 10);\n\n\t/**\n\t * ___++\n\t * \n\t * ++___\n\t */\n\tpublic static readonly INC = new Token('++', 0);\n\n\t/**\n\t * ___--\n\t * \n\t * --___\n\t */\n\tpublic static readonly DEC = new Token('--', 0);\n\n\t/**\n\t * ___ == ___\n\t */\n\tpublic static readonly EQ = new Token('==', 9);\n\n\t/**\n\t * ___ === ___\n\t */\n\tpublic static readonly EQ_STRICT = new Token('===', 9);\n\n\t/**\n\t * ___ != ___\n\t */\n\tpublic static readonly NE = new Token('!=', 9);\n\n\t/**\n\t * ___ !== ___\n\t */\n\tpublic static readonly NE_STRICT = new Token('!==', 9);\n\n\t/**\n\t * ___ <= ___\n\t */\n\tpublic static readonly LTE = new Token('<=', 10);\n\n\t/**\n\t * ___ >= ___\n\t */\n\tpublic static readonly GTE = new Token('>=', 10);\n\n\t/**\n\t * ___ <=> ___\n\t */\n\tpublic static readonly SPACESHIP = new Token('<=>', 10);\n\n\t/**\n\t * ___ = ___\n\t */\n\tpublic static readonly ASSIGN = new Token('=', 2);\n\n\t/**\n\t * ___ += ___\n\t */\n\tpublic static readonly ADD_ASSIGN = new Token('+=', 2);\n\n\t/**\n\t * ___ -= ___\n\t */\n\tpublic static readonly SUB_ASSIGN = new Token('-=', 2);\n\n\t/**\n\t * ___ *= ___\n\t */\n\tpublic static readonly MUL_ASSIGN = new Token('*=', 2);\n\n\t/**\n\t * ___ /= ___\n\t */\n\tpublic static readonly DIV_ASSIGN = new Token('/=', 2);\n\n\t/**\n\t * ___ %= ___\n\t */\n\tpublic static readonly MOD_ASSIGN = new Token('%=', 2);\n\n\t/**\n\t * ___ %% ___\n\t */\n\tpublic static readonly MODULO_ASSIGN = new Token('%%=', 2);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly LARGER_ASSIGN = new Token('>?=', 2);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly SMALLER_ASSIGN = new Token('<?=', 2);\n\n\t/**\n\t * ___ **= ___\n\t */\n\tpublic static readonly EXP_ASSIGN = new Token('**=', 2);\n\n\t/**\n\t * ___ ^= ___\n\t */\n\tpublic static readonly BIT_XOR_ASSIGN = new Token('^=', 2);\n\n\t/**\n\t * ___ &= ___\n\t */\n\tpublic static readonly BIT_AND_ASSIGN = new Token('&=', 2);\n\n\t/**\n\t * ___ |= ___\n\t */\n\tpublic static readonly BIT_OR_ASSIGN = new Token('|=', 2);\n\n\t/**\n\t * ___ &&= ___\n\t */\n\tpublic static readonly AND_ASSIGN = new Token('&&=', 2);\n\n\t/**\n\t * ___ ||= ___\n\t */\n\tpublic static readonly OR_ASSIGN = new Token('||=', 2);\n\n\t/**\n\t * ___ ??= ___\n\t */\n\tpublic static readonly NULLISH_ASSIGN = new Token('??=', 2);\n\n\t/**\n\t * ___ <<= ___\n\t */\n\tpublic static readonly SHL_ASSIGN = new Token('<<=', 2);\n\n\t/**\n\t * ___ >>= ___\n\t */\n\tpublic static readonly SAR_ASSIGN = new Token('>>=', 2);\n\n\t/**\n\t * ___ >>>= ___\n\t */\n\tpublic static readonly SHR_ASSIGN = new Token('>>>=', 2);\n\n\t/**\n\t * ___ . ___\n\t */\n\tpublic static readonly PERIOD = new Token('.', 0);\n\n\t/**\n\t * ___ ?. ___\n\t * \n\t * ___?.[___]\n\t * \n\t * ___?.()\n\t */\n\tpublic static readonly QUESTION_PERIOD = new Token('?.', 0);\n\n\t/**\n\t * ___ :: ___\n\t */\n\tpublic static readonly BIND = new Token('::', 0);\n\n\t/**\n\t * ___ ?:: ___\n\t * \n\t * ___?::[___]\n\t * \n\t * ___?::()\n\t */\n\tpublic static readonly QUESTION_BIND = new Token('?::', 0);\n\n\t/**\n\t * (\n\t */\n\tpublic static readonly LPAREN = new Token('(', 0);\n\n\t/**\n\t * )\n\t */\n\tpublic static readonly RPAREN = new Token(')', 0);\n\n\t/**\n\t * [\n\t */\n\tpublic static readonly LBRACK = new Token('[', 0);\n\n\t/**\n\t * ]\n\t */\n\tpublic static readonly RBRACK = new Token(']', 0);\n\n\t/**\n\t * {\n\t */\n\tpublic static readonly LBRACE = new Token('{', 0);\n\n\t/**\n\t * }\n\t */\n\tpublic static readonly RBRACE = new Token('}', 0);\n\n\t/**\n\t * :\n\t */\n\tpublic static readonly COLON = new Token(':', 0);\n\n\t/**\n\t * ...\n\t */\n\tpublic static readonly ELLIPSIS = new Token('...', 0);\n\n\t/**\n\t * ;\n\t */\n\tpublic static readonly SEMICOLON = new Token(';', 0);\n\n\t/**\n\t * end of source\n\t */\n\tpublic static readonly EOS = new Token('EOS', 0);\n\n\t/**\n\t * =>\n\t */\n\tpublic static readonly ARROW = new Token('=>', 0);\n\n\t/**\n\t * ___, ___, ___\n\t */\n\tpublic static readonly COMMA = new Token(',', 1);\n\tpublic static readonly ASYNC = new Token('async', 0);\n\tpublic static readonly AWAIT = new Token('await', 0);\n\tpublic static readonly BREAK = new Token('break', 0);\n\tpublic static readonly CASE = new Token('case', 0);\n\tpublic static readonly CATCH = new Token('catch', 0);\n\tpublic static readonly CLASS = new Token('class', 0);\n\tpublic static readonly CONST = new Token('const', 0);\n\tpublic static readonly CONTINUE = new Token('continue', 0);\n\tpublic static readonly DEBUGGER = new Token('debugger', 0);\n\tpublic static readonly DEFAULT = new Token('default', 0);\n\tpublic static readonly DELETE = new Token('delete', 0);\n\tpublic static readonly DO = new Token('do', 0);\n\tpublic static readonly ELSE = new Token('else', 0);\n\tpublic static readonly ENUM = new Token('enum', 0);\n\tpublic static readonly EXPORT = new Token('export', 0);\n\tpublic static readonly EXTENDS = new Token('extends', 0);\n\tpublic static readonly FALSE_LITERAL = new Token('false', 0);\n\tpublic static readonly FINALLY = new Token('finally', 0);\n\tpublic static readonly FOR = new Token('for', 0);\n\tpublic static readonly FUNCTION = new Token('function', 0);\n\tpublic static readonly GET = new Token('get', 0);\n\tpublic static readonly IF = new Token('if', 0);\n\tpublic static readonly IMPLEMENTS = new Token('implements', 0);\n\tpublic static readonly IMPORT = new Token('import', 0);\n\tpublic static readonly PRIVATE_NAME = new Token('PRIVATE_NAME', 0);\n\tpublic static readonly IN = new Token('in', 10);\n\tpublic static readonly INSTANCEOF = new Token('instanceof', 10);\n\tpublic static readonly LET = new Token('let', 0);\n\tpublic static readonly NEW = new Token('new', 0);\n\tpublic static readonly NULL_LITERAL = new Token('null', 0);\n\tpublic static readonly UNDEFINED_LITERAL = new Token('undefined', 0);\n\tpublic static readonly PACKAGE = new Token('package', 0);\n\tpublic static readonly INTERFACE = new Token('interface', 0);\n\tpublic static readonly PRIVATE = new Token('private', 0);\n\tpublic static readonly PROTECTED = new Token('protected', 0);\n\tpublic static readonly PUBLIC = new Token('public', 0);\n\tpublic static readonly RETURN = new Token('return', 0);\n\tpublic static readonly SET = new Token('set', 0);\n\tpublic static readonly STATIC = new Token('static', 0);\n\tpublic static readonly SUPER = new Token('super', 0);\n\tpublic static readonly SWITCH = new Token('switch', 0);\n\tpublic static readonly THIS = new Token('this', 0);\n\tpublic static readonly THROW = new Token('throw', 0);\n\tpublic static readonly TRUE_LITERAL = new Token('true', 0);\n\tpublic static readonly TRY = new Token('try', 0);\n\tpublic static readonly TYPEOF = new Token('typeof', 0);\n\tpublic static readonly VAR = new Token('var', 0);\n\tpublic static readonly VOID = new Token('void', 0);\n\tpublic static readonly WHILE = new Token('while', 0);\n\tpublic static readonly YIELD = new Token('yield', 0);\n\tpublic static readonly NUMBER = new Token('NUMBER', 0);\n\tpublic static readonly BIGINT = new Token('BIGINT', 0);\n\tpublic static readonly STRING = new Token('STRING', 0);\n\tpublic static readonly IDENTIFIER = new Token('IDENTIFIER', 0);\n\t/**\n\t * TEMPLATE_SPAN ::\n\t * \n\t * \t\t` LiteralChars* ${\n\t * \t\t| } LiteralChars* ${\n\t */\n\tpublic static readonly TEMPLATE_SPAN = new Token('TEMPLATE_SPAN', 0);\n\n\t/**\n\t * TEMPLATE_TAIL ::\n\t * \n\t * \t\t` LiteralChars* `\n\t * \t\t| } LiteralChar* `\n\t */\n\tpublic static readonly TEMPLATE_TAIL = new Token('TEMPLATE_TAIL', 0);\n\tpublic static readonly ILLEGAL = new Token('ILLEGAL', 0);\n\tpublic static readonly ESCAPED_KEYWORD = new Token('ESCAPED_KEYWORD', 0);\n\tpublic static readonly WHITESPACE = new Token('WHITESPACE', 0);\n\tpublic static readonly REGEXP_LITERAL = new Token('REGEXP_LITERAL', 0);\n\n\n\tpublic static isPair(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.LPAREN:\n\t\t\tcase Token.LBRACK:\n\t\t\tcase Token.LBRACE:\n\t\t\tcase Token.RBRACE:\n\t\t\tcase Token.RBRACK:\n\t\t\tcase Token.RPAREN:\n\t\t\t\treturn true;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\tpublic static isOpenPair(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.LPAREN:\n\t\t\tcase Token.LBRACK:\n\t\t\tcase Token.LBRACE:\n\t\t\t\treturn true;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\tpublic static isClosePair(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.RBRACE:\n\t\t\tcase Token.RBRACK:\n\t\t\tcase Token.RPAREN:\n\t\t\t\treturn true;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\tpublic static openOf(token: Token): Token {\n\t\tswitch (token) {\n\t\t\tcase Token.RBRACE:\n\t\t\t\treturn Token.LBRACE;\n\t\t\tcase Token.RBRACK:\n\t\t\t\treturn Token.LBRACK;\n\t\t\tcase Token.RPAREN:\n\t\t\t\treturn Token.LPAREN;\n\t\t}\n\t\treturn token;\n\t}\n\tpublic static closeOf(token: Token): Token {\n\t\tswitch (token) {\n\t\t\tcase Token.LBRACE:\n\t\t\t\treturn Token.RBRACE;\n\t\t\tcase Token.LBRACK:\n\t\t\t\treturn Token.RBRACK;\n\t\t\tcase Token.LPAREN:\n\t\t\t\treturn Token.RPAREN;\n\t\t}\n\t\treturn token;\n\t}\n\tpublic static isAnyIdentifier(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.IDENTIFIER:\n\t\t\tcase Token.GET:\n\t\t\tcase Token.SET:\n\t\t\tcase Token.ASYNC:\n\t\t\tcase Token.AWAIT:\n\t\t\tcase Token.YIELD:\n\t\t\tcase Token.LET:\n\t\t\tcase Token.STATIC:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isIdentifier(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.IDENTIFIER:\n\t\t\tcase Token.GET:\n\t\t\tcase Token.SET:\n\t\t\tcase Token.ASYNC:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isLiteral(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.UNDEFINED_LITERAL:\n\t\t\tcase Token.NULL_LITERAL:\n\t\t\tcase Token.TRUE_LITERAL:\n\t\t\tcase Token.FALSE_LITERAL:\n\t\t\tcase Token.NUMBER:\n\t\t\tcase Token.BIGINT:\n\t\t\tcase Token.STRING:\n\t\t\tcase Token.REGEXP_LITERAL:\n\t\t\t\t// case Token.SMI:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isArrowOrAssignmentOp(token: Token) {\n\t\treturn token === Token.ARROW || this.isAssignment(token);\n\t}\n\tpublic static isAssignment(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.ASSIGN:\n\t\t\tcase Token.ADD_ASSIGN:\n\t\t\tcase Token.SUB_ASSIGN:\n\t\t\tcase Token.MUL_ASSIGN:\n\t\t\tcase Token.DIV_ASSIGN:\n\t\t\tcase Token.MOD_ASSIGN:\n\t\t\tcase Token.MODULO_ASSIGN:\n\t\t\tcase Token.EXP_ASSIGN:\n\t\t\tcase Token.BIT_XOR_ASSIGN:\n\t\t\tcase Token.BIT_AND_ASSIGN:\n\t\t\tcase Token.BIT_OR_ASSIGN:\n\t\t\tcase Token.AND_ASSIGN:\n\t\t\tcase Token.OR_ASSIGN:\n\t\t\tcase Token.NULLISH_ASSIGN:\n\t\t\tcase Token.SHL_ASSIGN:\n\t\t\tcase Token.SAR_ASSIGN:\n\t\t\tcase Token.SHR_ASSIGN:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isLogicalAssignmentOp(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.AND_ASSIGN:\n\t\t\tcase Token.OR_ASSIGN:\n\t\t\tcase Token.NULLISH_ASSIGN:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isAutoSemicolon(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.SEMICOLON:\n\t\t\tcase Token.RBRACE:\n\t\t\tcase Token.EOS:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isMember(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.TEMPLATE_SPAN:\n\t\t\tcase Token.TEMPLATE_TAIL:\n\t\t\tcase Token.PERIOD:\n\t\t\tcase Token.LBRACK:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isTemplate(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.TEMPLATE_SPAN:\n\t\t\tcase Token.TEMPLATE_TAIL:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isNextLetKeyword(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.LBRACE:\n\t\t\tcase Token.LBRACK:\n\t\t\tcase Token.IDENTIFIER:\n\t\t\tcase Token.STATIC:\n\t\t\tcase Token.LET: // `let let;` is disallowed by static semantics, but the\n\t\t\t// token must be first interpreted as a keyword in order\n\t\t\t// for those semantics to apply. This ensures that ASI is\n\t\t\t// not honored when a LineTerminator separates the tokens.\n\t\t\tcase Token.YIELD:\n\t\t\tcase Token.AWAIT:\n\t\t\tcase Token.GET:\n\t\t\tcase Token.SET:\n\t\t\tcase Token.ASYNC:\n\t\t\t\treturn true;\n\t\t\t// case Token.FUTURE_STRICT_RESERVED_WORD:\n\t\t\t// return is_sloppy(language_mode());\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tpublic static isInRangeIdentifierAndAsync(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.IDENTIFIER:\n\t\t\tcase Token.GET:\n\t\t\tcase Token.SET:\n\t\t\tcase Token.ASYNC:\n\t\t\t\treturn true;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\tpublic static isPropertyOrCall(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.TEMPLATE_SPAN:\n\t\t\tcase Token.TEMPLATE_TAIL:\n\t\t\tcase Token.PERIOD:\n\t\t\tcase Token.LBRACK:\n\t\t\tcase Token.QUESTION_PERIOD:\n\t\t\tcase Token.LPAREN:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isPropertyName(token: Token) {\n\t\treturn /\\w/.test(token.getName());\n\t}\n\tprivate static isInRange(op: number, start: Token, end: Token) {\n\t\treturn op >= start.precedence && op <= end.precedence;\n\t}\n\tpublic static isProperty(token: number | Token) {\n\t\tif (token instanceof Token) {\n\t\t\ttoken = token.precedence;\n\t\t}\n\t\treturn Token.isInRange(token, Token.PERIOD, Token.LBRACK);\n\t}\n\tpublic static isBinary(token: number | Token) {\n\t\tif (token instanceof Token) {\n\t\t\ttoken = token.precedence;\n\t\t}\n\t\treturn Token.isInRange(token, Token.COMMA, Token.SUB);\n\t}\n\n\tpublic static isCompare(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.EQ:\n\t\t\tcase Token.EQ_STRICT:\n\t\t\tcase Token.NE:\n\t\t\tcase Token.NE_STRICT:\n\t\t\tcase Token.LT:\n\t\t\tcase Token.GT:\n\t\t\tcase Token.LTE:\n\t\t\tcase Token.GTE:\n\t\t\tcase Token.SPACESHIP:\n\t\t\tcase Token.INSTANCEOF:\n\t\t\tcase Token.IN:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isOrderedRelationalCompare(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.LT:\n\t\t\tcase Token.GT:\n\t\t\tcase Token.LTE:\n\t\t\tcase Token.GTE:\n\t\t\tcase Token.SPACESHIP:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isEquality(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.EQ:\n\t\t\tcase Token.EQ_STRICT:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static binaryOpForAssignment(token: Token) {\n\t\tif (Token.isInRange(token.precedence, Token.NULLISH_ASSIGN, Token.SUB_ASSIGN)) {\n\t\t\tconst result = token.precedence - Token.NULLISH_ASSIGN.precedence + Token.NULLISH.precedence;\n\t\t\treturn Token.isBinary(result);\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isBitOp(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.BIT_NOT:\n\t\t\tcase Token.BIT_OR:\n\t\t\tcase Token.BIT_XOR:\n\t\t\tcase Token.BIT_AND:\n\t\t\tcase Token.SHL:\n\t\t\tcase Token.SAR:\n\t\t\tcase Token.SHR:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isUnary(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.ADD:\n\t\t\tcase Token.SUB:\n\t\t\tcase Token.NOT:\n\t\t\tcase Token.BIT_NOT:\n\t\t\tcase Token.DELETE:\n\t\t\tcase Token.AWAIT:\n\t\t\tcase Token.TYPEOF:\n\t\t\tcase Token.VOID:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isCount(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.INC:\n\t\t\tcase Token.DEC:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isUnaryOrCount(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.ADD:\n\t\t\tcase Token.SUB:\n\t\t\tcase Token.INC:\n\t\t\tcase Token.DEC:\n\t\t\tcase Token.NOT:\n\t\t\tcase Token.BIT_NOT:\n\t\t\tcase Token.DELETE:\n\t\t\tcase Token.AWAIT:\n\t\t\tcase Token.TYPEOF:\n\t\t\tcase Token.VOID:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isShift(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.SHL:\n\t\t\tcase Token.SAR:\n\t\t\tcase Token.SHR:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isStrictReservedWord(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.IMPLEMENTS:\n\t\t\tcase Token.INTERFACE:\n\t\t\tcase Token.LET:\n\t\t\tcase Token.PACKAGE:\n\t\t\tcase Token.PRIVATE:\n\t\t\tcase Token.PROTECTED:\n\t\t\tcase Token.PUBLIC:\n\t\t\tcase Token.STATIC:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isPipelineOperator(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.PIPELINE:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isValidIdentifier(token: Token, mode: LanguageMode, isGenerator: boolean, disallowAwait: boolean) {\n\t\tif (Token.isInRangeIdentifierAndAsync(token)) return true;\n\t\tif (token == Token.AWAIT) return !disallowAwait;\n\t\tif (token == Token.YIELD) return !isGenerator;\n\t\treturn Token.isStrictReservedWord(token) && isSloppy(mode);\n\t}\n\n\tpublic static precedence(token: Token, acceptIN: boolean) {\n\t\tif (!acceptIN && Token.IN === token) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn token.getPrecedence();\n\t}\n\n\tconstructor(private name: string, private precedence: number) { }\n\tgetName() {\n\t\treturn this.name;\n\t}\n\tgetPrecedence() {\n\t\treturn this.precedence;\n\t}\n\tequal(token: Token) {\n\t\treturn this === token || this.name === token.name;\n\t}\n}\n\nexport class TokenExpression {\n\tconstructor(public token: Token, public value?: ExpressionNode) { }\n\tgetValue<T extends ExpressionNode>(): T {\n\t\treturn this.value! as T;\n\t}\n\tisType(type: Token) {\n\t\treturn this.token === type;\n\t}\n\tisNotType(type: Token) {\n\t\treturn this.token !== type;\n\t}\n\n\ttest(func: (token: Token, value?: ExpressionNode) => boolean): boolean {\n\t\treturn func(this.token, this.value);\n\t}\n\ttoString(): string {\n\t\treturn JSON.stringify(this);\n\t}\n}\n"]}
|
package/visit/visitor.js
CHANGED
|
@@ -14,14 +14,11 @@ export class ExpressionVisitor {
|
|
|
14
14
|
};
|
|
15
15
|
const visitNode = (expression) => {
|
|
16
16
|
visitorCallback(expression, this.getType(expression), control);
|
|
17
|
-
this.visitExpressionNode(expression, visitNode
|
|
18
|
-
};
|
|
19
|
-
const visitNodeList = (expressions) => {
|
|
20
|
-
expressions.forEach(visitNode);
|
|
17
|
+
this.visitExpressionNode(expression, visitNode);
|
|
21
18
|
};
|
|
22
19
|
try {
|
|
23
20
|
visitorCallback(node, this.getType(node), control);
|
|
24
|
-
this.visitExpressionNode(node, visitNode
|
|
21
|
+
this.visitExpressionNode(node, visitNode);
|
|
25
22
|
}
|
|
26
23
|
catch (abort) {
|
|
27
24
|
if (!(abort instanceof AbortException)) {
|
|
@@ -29,13 +26,13 @@ export class ExpressionVisitor {
|
|
|
29
26
|
}
|
|
30
27
|
}
|
|
31
28
|
}
|
|
32
|
-
visitExpressionNode(node, visitNode
|
|
29
|
+
visitExpressionNode(node, visitNode) {
|
|
33
30
|
const classType = expressionTypes.get(this.getType(node));
|
|
34
31
|
const visit = classType.visit;
|
|
35
32
|
if (!visit) {
|
|
36
33
|
return;
|
|
37
34
|
}
|
|
38
|
-
visit(node, visitNode
|
|
35
|
+
visit(node, visitNode);
|
|
39
36
|
}
|
|
40
37
|
}
|
|
41
38
|
export const expressionVisitor = new ExpressionVisitor();
|
package/visit/visitor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visitor.js","sourceRoot":"","sources":["../../../src/expressions/visit/visitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAclE,CAAC;AAEF,MAAM,cAAe,SAAQ,KAAK;CAEjC;AAID,MAAM,OAAO,iBAAiB;IAErB,OAAO,CAAC,IAAoB;QACnC,OAAQ,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"visitor.js","sourceRoot":"","sources":["../../../src/expressions/visit/visitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAclE,CAAC;AAEF,MAAM,cAAe,SAAQ,KAAK;CAEjC;AAID,MAAM,OAAO,iBAAiB;IAErB,OAAO,CAAC,IAAoB;QACnC,OAAQ,IAAI,CAAC,WAAwD,CAAC,IAAI,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,IAAoB,EAAE,eAAgC;QAC3D,MAAM,OAAO,GAAmB;YAC/B,KAAK;gBACJ,MAAM,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;YACvC,CAAC;SACD,CAAC;QACF,MAAM,SAAS,GAAkB,CAAC,UAAU,EAAE,EAAE;YAC/C,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;YAC/D,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC;QACF,IAAI;YACH,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SAC1C;QAAC,OAAO,KAAK,EAAE;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,cAAc,CAAC,EAAE;gBACvC,MAAM,KAAK,CAAC;aACZ;SACD;IACF,CAAC;IAEO,mBAAmB,CAAC,IAAoB,EAAE,SAAwB;QACzE,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,EAAE;YACX,OAAO;SACP;QACD,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxB,CAAC;CAED;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC","sourcesContent":["import { expressionTypes } from '../api/deserialize/type-store.js';\nimport { ExpressionNode, ExpressionNodConstructor, VisitNodeType } from '../api/expression.js';\n\nexport interface VisitorControl {\n\n\t/**\n\t * terminate the traversal\n\t */\n\tabort(): void;\n\n\t// /**\n\t// * indicate that the traversal need not continue any further down this subtree.\n\t// */\n\t// traverse(): void;\n};\n\nclass AbortException extends Error {\n\n}\n\nexport type VisitorCallback = (expression: ExpressionNode, type: string, control: VisitorControl) => void;\n\nexport class ExpressionVisitor {\n\n\tprivate getType(node: ExpressionNode): string {\n\t\treturn (node.constructor as ExpressionNodConstructor<ExpressionNode>).type;\n\t}\n\n\tvisit(node: ExpressionNode, visitorCallback: VisitorCallback): void {\n\t\tconst control: VisitorControl = {\n\t\t\tabort() {\n\t\t\t\tthrow new AbortException('terminate');\n\t\t\t}\n\t\t};\n\t\tconst visitNode: VisitNodeType = (expression) => {\n\t\t\tvisitorCallback(expression, this.getType(expression), control);\n\t\t\tthis.visitExpressionNode(expression, visitNode);\n\t\t};\n\t\ttry {\n\t\t\tvisitorCallback(node, this.getType(node), control);\n\t\t\tthis.visitExpressionNode(node, visitNode);\n\t\t} catch (abort) {\n\t\t\tif (!(abort instanceof AbortException)) {\n\t\t\t\tthrow abort;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate visitExpressionNode(node: ExpressionNode, visitNode: VisitNodeType): void {\n\t\tconst classType = expressionTypes.get(this.getType(node))!;\n\t\tconst visit = classType.visit;\n\t\tif (!visit) {\n\t\t\treturn;\n\t\t}\n\t\tvisit(node, visitNode);\n\t}\n\n}\n\nexport const expressionVisitor = new ExpressionVisitor();\n"]}
|
package/api/app/class.d.ts
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import type { CanDeclareExpression, ExpressionEventPath, ExpressionNode, NodeDeserializer } from '../expression.js';
|
|
2
|
-
import type { Stack } from '../../scope/stack.js';
|
|
3
|
-
import type { Scope, ScopeType } from '../../scope/scope.js';
|
|
4
|
-
import { AbstractExpressionNode } from '../abstract.js';
|
|
5
|
-
import { Identifier } from '../definition/values.js';
|
|
6
|
-
import { MemberExpression } from '../definition/member.js';
|
|
7
|
-
import { FunctionExpression } from '../definition/function.js';
|
|
8
|
-
export declare class MetaProperty extends MemberExpression {
|
|
9
|
-
private meta;
|
|
10
|
-
static NewTarget: MetaProperty;
|
|
11
|
-
static ImportMeta: MetaProperty;
|
|
12
|
-
private static getJsonName;
|
|
13
|
-
static fromJSON(node: MetaProperty, deserializer: NodeDeserializer<any>): MetaProperty;
|
|
14
|
-
constructor(meta: Identifier, property: Identifier);
|
|
15
|
-
getMeta(): Identifier;
|
|
16
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
17
|
-
toString(): string;
|
|
18
|
-
toJson(): {
|
|
19
|
-
[key: string]: any;
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
export declare class PrivateIdentifier extends Identifier {
|
|
23
|
-
private privateName;
|
|
24
|
-
static fromJSON(node: PrivateIdentifier): PrivateIdentifier;
|
|
25
|
-
constructor(privateName: string);
|
|
26
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
27
|
-
toString(): string;
|
|
28
|
-
toJson(): {
|
|
29
|
-
[key: string]: any;
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
export declare type MethodDefinitionKind = 'constructor' | 'method' | 'set' | 'get';
|
|
33
|
-
export declare class MethodDefinition extends AbstractExpressionNode implements CanDeclareExpression {
|
|
34
|
-
private kind;
|
|
35
|
-
private key;
|
|
36
|
-
private value;
|
|
37
|
-
private computed;
|
|
38
|
-
static fromJSON(node: MethodDefinition, deserializer: NodeDeserializer<any>): MethodDefinition;
|
|
39
|
-
private 'static';
|
|
40
|
-
constructor(kind: MethodDefinitionKind, key: ExpressionNode | PrivateIdentifier, value: FunctionExpression, computed: boolean, isStatic: boolean);
|
|
41
|
-
getKind(): MethodDefinitionKind;
|
|
42
|
-
getKey(): ExpressionNode | PrivateIdentifier;
|
|
43
|
-
getValue(): FunctionExpression;
|
|
44
|
-
isComputed(): boolean;
|
|
45
|
-
isStatic(): boolean;
|
|
46
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
47
|
-
set(stack: Stack, value: any): void;
|
|
48
|
-
get(stack: Stack, thisContext?: any): void;
|
|
49
|
-
declareVariable(stack: Stack, scopeType: ScopeType, propertyValue?: any): void;
|
|
50
|
-
dependency(computed?: true): ExpressionNode[];
|
|
51
|
-
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
52
|
-
toString(): string;
|
|
53
|
-
toJson(): {
|
|
54
|
-
[key: string]: any;
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
export declare class PropertyDefinition extends AbstractExpressionNode implements CanDeclareExpression {
|
|
58
|
-
private key;
|
|
59
|
-
private computed;
|
|
60
|
-
private value?;
|
|
61
|
-
static fromJSON(node: PropertyDefinition, deserializer: NodeDeserializer<any>): PropertyDefinition;
|
|
62
|
-
private 'static';
|
|
63
|
-
constructor(key: ExpressionNode | PrivateIdentifier, computed: boolean, isStatic: boolean, value?: ExpressionNode | undefined);
|
|
64
|
-
getKey(): ExpressionNode | PrivateIdentifier;
|
|
65
|
-
getValue(): ExpressionNode | undefined;
|
|
66
|
-
isComputed(): boolean;
|
|
67
|
-
isStatic(): boolean;
|
|
68
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
69
|
-
set(stack: Stack, value: any): void;
|
|
70
|
-
get(stack: Stack, thisContext?: any): void;
|
|
71
|
-
declareVariable(stack: Stack, scopeType: ScopeType, propertyValue?: any): void;
|
|
72
|
-
dependency(computed?: true): ExpressionNode[];
|
|
73
|
-
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
74
|
-
toString(): string;
|
|
75
|
-
toJson(): {
|
|
76
|
-
[key: string]: any;
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
export declare class ClassBody extends AbstractExpressionNode {
|
|
80
|
-
private body;
|
|
81
|
-
static fromJSON(node: ClassBody, deserializer: NodeDeserializer<any>): ClassBody;
|
|
82
|
-
constructor(body: (MethodDefinition | PropertyDefinition)[]);
|
|
83
|
-
getBody(): (MethodDefinition | PropertyDefinition)[];
|
|
84
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
85
|
-
set(stack: Stack, value: any): void;
|
|
86
|
-
get(stack: Stack, thisContext?: any): void;
|
|
87
|
-
dependency(computed?: true): ExpressionNode[];
|
|
88
|
-
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
89
|
-
toString(): string;
|
|
90
|
-
toJson(): {
|
|
91
|
-
[key: string]: any;
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
export declare class Class extends AbstractExpressionNode {
|
|
95
|
-
protected body: ClassBody;
|
|
96
|
-
protected id?: Identifier | undefined;
|
|
97
|
-
protected superClass?: ExpressionNode | undefined;
|
|
98
|
-
constructor(body: ClassBody, id?: Identifier | undefined, superClass?: ExpressionNode | undefined);
|
|
99
|
-
getBody(): ClassBody;
|
|
100
|
-
getId(): Identifier | undefined;
|
|
101
|
-
getSuperClass(): ExpressionNode | undefined;
|
|
102
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
103
|
-
set(stack: Stack): void;
|
|
104
|
-
get(stack: Stack): void;
|
|
105
|
-
dependency(computed?: true): ExpressionNode[];
|
|
106
|
-
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
107
|
-
toString(): string;
|
|
108
|
-
toJson(): object;
|
|
109
|
-
}
|
|
110
|
-
export declare class ClassDeclaration extends Class implements CanDeclareExpression {
|
|
111
|
-
static fromJSON(node: ClassDeclaration, deserializer: NodeDeserializer<any>): ClassDeclaration;
|
|
112
|
-
protected id: Identifier;
|
|
113
|
-
declareVariable(stack: Stack, scopeType: ScopeType, propertyValue?: any): void;
|
|
114
|
-
}
|
|
115
|
-
export declare class ClassExpression extends Class {
|
|
116
|
-
static fromJSON(node: ClassExpression, deserializer: NodeDeserializer<any>): ClassExpression;
|
|
117
|
-
}
|