@ibyar/expressions 0.5.2 → 0.5.62
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 +4 -3
- package/api/abstract.d.ts +5 -6
- package/api/abstract.js +8 -3
- package/api/abstract.js.map +1 -1
- package/api/class/class.d.ts +227 -0
- package/api/class/class.js +662 -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 +6 -1
- package/api/computing/return.js +8 -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 +6 -1
- package/api/computing/throw.js +7 -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 +8 -2
- package/api/definition/bind.js +7 -1
- package/api/definition/bind.js.map +1 -1
- package/api/definition/function.d.ts +40 -51
- package/api/definition/function.js +292 -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 +44 -50
- package/api/definition/values.js +87 -149
- package/api/definition/values.js.map +1 -1
- package/api/deserialize/deserialize.d.ts +7 -1
- package/api/deserialize/deserialize.js +9 -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 +159 -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 +129 -25
- package/api/module/export.js +333 -58
- package/api/module/export.js.map +1 -1
- package/api/module/import.d.ts +114 -25
- package/api/module/import.js +279 -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 +9 -2
- package/api/operators/grouping.js +8 -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 +14 -2
- package/api/operators/pipeline.js +13 -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 +7 -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 +8 -5
- package/api/statement/control/block.js +26 -23
- package/api/statement/control/block.js.map +1 -1
- package/api/statement/control/empty.d.ts +8 -1
- package/api/statement/control/empty.js +7 -0
- package/api/statement/control/empty.js.map +1 -1
- package/api/statement/control/if.d.ts +7 -2
- package/api/statement/control/if.js +6 -1
- package/api/statement/control/if.js.map +1 -1
- package/api/statement/control/switch.d.ts +10 -5
- package/api/statement/control/switch.js +22 -9
- package/api/statement/control/switch.js.map +1 -1
- package/api/statement/control/terminate.d.ts +46 -13
- package/api/statement/control/terminate.js +89 -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 +10 -5
- package/api/statement/iterations/for.js +42 -23
- package/api/statement/iterations/for.js.map +1 -1
- package/api/statement/iterations/while.d.ts +9 -3
- package/api/statement/iterations/while.js +27 -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/finalizer.d.ts +4 -0
- package/scope/finalizer.js +11 -0
- package/scope/finalizer.js.map +1 -0
- package/scope/proxy.d.ts +5 -3
- package/scope/proxy.js +26 -26
- package/scope/proxy.js.map +1 -1
- package/scope/scope.d.ts +108 -51
- package/scope/scope.js +72 -134
- package/scope/scope.js.map +1 -1
- package/scope/stack.d.ts +117 -26
- package/scope/stack.js +154 -102
- package/scope/stack.js.map +1 -1
- package/v8/enums.d.ts +204 -0
- package/v8/enums.js +406 -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 +213 -0
- package/v8/inline.js +2375 -0
- package/v8/inline.js.map +1 -0
- package/v8/nodes.d.ts +8 -7
- package/v8/nodes.js +39 -64
- package/v8/nodes.js.map +1 -1
- package/v8/parser.d.ts +49 -151
- package/v8/parser.js +839 -1607
- package/v8/parser.js.map +1 -1
- package/v8/stream.d.ts +39 -3
- package/v8/stream.js +685 -171
- package/v8/stream.js.map +1 -1
- package/v8/token.d.ts +244 -9
- package/v8/token.js +315 -47
- package/v8/token.js.map +1 -1
- package/visit/visitor.d.ts +3 -0
- 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
|
}
|
|
@@ -92,6 +93,7 @@ export class Token {
|
|
|
92
93
|
case Token.BIGINT:
|
|
93
94
|
case Token.STRING:
|
|
94
95
|
case Token.REGEXP_LITERAL:
|
|
96
|
+
// case Token.SMI:
|
|
95
97
|
return true;
|
|
96
98
|
}
|
|
97
99
|
return false;
|
|
@@ -134,7 +136,7 @@ export class Token {
|
|
|
134
136
|
static isAutoSemicolon(token) {
|
|
135
137
|
switch (token) {
|
|
136
138
|
case Token.SEMICOLON:
|
|
137
|
-
case Token.
|
|
139
|
+
case Token.RBRACE:
|
|
138
140
|
case Token.EOS:
|
|
139
141
|
return true;
|
|
140
142
|
}
|
|
@@ -142,31 +144,49 @@ export class Token {
|
|
|
142
144
|
}
|
|
143
145
|
static isMember(token) {
|
|
144
146
|
switch (token) {
|
|
145
|
-
case Token.
|
|
147
|
+
case Token.TEMPLATE_SPAN:
|
|
148
|
+
case Token.TEMPLATE_TAIL:
|
|
146
149
|
case Token.PERIOD:
|
|
147
|
-
case Token.
|
|
150
|
+
case Token.LBRACK:
|
|
148
151
|
return true;
|
|
149
152
|
}
|
|
150
153
|
return false;
|
|
151
154
|
}
|
|
152
155
|
static isTemplate(token) {
|
|
153
156
|
switch (token) {
|
|
154
|
-
case Token.
|
|
157
|
+
case Token.TEMPLATE_SPAN:
|
|
158
|
+
case Token.TEMPLATE_TAIL:
|
|
155
159
|
return true;
|
|
156
160
|
}
|
|
157
161
|
return false;
|
|
158
162
|
}
|
|
159
163
|
static isNextLetKeyword(token) {
|
|
160
164
|
switch (token) {
|
|
161
|
-
case Token.
|
|
162
|
-
case Token.
|
|
165
|
+
case Token.LBRACE:
|
|
166
|
+
case Token.LBRACK:
|
|
163
167
|
case Token.IDENTIFIER:
|
|
164
168
|
case Token.STATIC:
|
|
165
|
-
case Token.LET:
|
|
169
|
+
case Token.LET: // `let let;` is disallowed by static semantics, but the
|
|
170
|
+
// token must be first interpreted as a keyword in order
|
|
171
|
+
// for those semantics to apply. This ensures that ASI is
|
|
172
|
+
// not honored when a LineTerminator separates the tokens.
|
|
166
173
|
case Token.YIELD:
|
|
167
174
|
case Token.AWAIT:
|
|
168
175
|
case Token.GET:
|
|
169
176
|
case Token.SET:
|
|
177
|
+
case Token.ASYNC:
|
|
178
|
+
return true;
|
|
179
|
+
// case Token.FUTURE_STRICT_RESERVED_WORD:
|
|
180
|
+
// return is_sloppy(language_mode());
|
|
181
|
+
default:
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
static isInRangeIdentifierAndAsync(token) {
|
|
186
|
+
switch (token) {
|
|
187
|
+
case Token.IDENTIFIER:
|
|
188
|
+
case Token.GET:
|
|
189
|
+
case Token.SET:
|
|
170
190
|
case Token.ASYNC:
|
|
171
191
|
return true;
|
|
172
192
|
default:
|
|
@@ -175,11 +195,12 @@ export class Token {
|
|
|
175
195
|
}
|
|
176
196
|
static isPropertyOrCall(token) {
|
|
177
197
|
switch (token) {
|
|
178
|
-
case Token.
|
|
198
|
+
case Token.TEMPLATE_SPAN:
|
|
199
|
+
case Token.TEMPLATE_TAIL:
|
|
179
200
|
case Token.PERIOD:
|
|
180
|
-
case Token.
|
|
201
|
+
case Token.LBRACK:
|
|
181
202
|
case Token.QUESTION_PERIOD:
|
|
182
|
-
case Token.
|
|
203
|
+
case Token.LPAREN:
|
|
183
204
|
return true;
|
|
184
205
|
}
|
|
185
206
|
return false;
|
|
@@ -190,6 +211,12 @@ export class Token {
|
|
|
190
211
|
static isInRange(op, start, end) {
|
|
191
212
|
return op >= start.precedence && op <= end.precedence;
|
|
192
213
|
}
|
|
214
|
+
static isProperty(token) {
|
|
215
|
+
if (token instanceof Token) {
|
|
216
|
+
token = token.precedence;
|
|
217
|
+
}
|
|
218
|
+
return Token.isInRange(token, Token.PERIOD, Token.LBRACK);
|
|
219
|
+
}
|
|
193
220
|
static isBinary(token) {
|
|
194
221
|
if (token instanceof Token) {
|
|
195
222
|
token = token.precedence;
|
|
@@ -320,12 +347,20 @@ export class Token {
|
|
|
320
347
|
}
|
|
321
348
|
return false;
|
|
322
349
|
}
|
|
323
|
-
static isValidIdentifier(token) {
|
|
324
|
-
if (Token.
|
|
350
|
+
static isValidIdentifier(token, mode, isGenerator, disallowAwait) {
|
|
351
|
+
if (Token.isInRangeIdentifierAndAsync(token))
|
|
325
352
|
return true;
|
|
326
|
-
if (token == Token.AWAIT
|
|
327
|
-
return
|
|
328
|
-
|
|
353
|
+
if (token == Token.AWAIT)
|
|
354
|
+
return !disallowAwait;
|
|
355
|
+
if (token == Token.YIELD)
|
|
356
|
+
return !isGenerator;
|
|
357
|
+
return Token.isStrictReservedWord(token) && isSloppy(mode);
|
|
358
|
+
}
|
|
359
|
+
static precedence(token, acceptIN) {
|
|
360
|
+
if (!acceptIN && Token.IN === token) {
|
|
361
|
+
return 0;
|
|
362
|
+
}
|
|
363
|
+
return token.getPrecedence();
|
|
329
364
|
}
|
|
330
365
|
getName() {
|
|
331
366
|
return this.name;
|
|
@@ -333,74 +368,294 @@ export class Token {
|
|
|
333
368
|
getPrecedence() {
|
|
334
369
|
return this.precedence;
|
|
335
370
|
}
|
|
371
|
+
equal(token) {
|
|
372
|
+
return this === token || this.name === token.name;
|
|
373
|
+
}
|
|
336
374
|
}
|
|
375
|
+
/**
|
|
376
|
+
* ___ ? ___ : ___
|
|
377
|
+
*/
|
|
337
378
|
Token.CONDITIONAL = new Token('?', 3);
|
|
379
|
+
/**
|
|
380
|
+
* ___ ?? ___
|
|
381
|
+
*/
|
|
338
382
|
Token.NULLISH = new Token('??', 3);
|
|
383
|
+
/**
|
|
384
|
+
* ___ |> ___ : ___ : ?
|
|
385
|
+
* ___ |> ___ ( ___, ___ , ?)
|
|
386
|
+
*/
|
|
339
387
|
Token.PIPELINE = new Token('|>', 3);
|
|
388
|
+
/**
|
|
389
|
+
* ___ || ___
|
|
390
|
+
*/
|
|
340
391
|
Token.OR = new Token('||', 4);
|
|
392
|
+
/**
|
|
393
|
+
* ___ && ___
|
|
394
|
+
*/
|
|
341
395
|
Token.AND = new Token('&&', 5);
|
|
396
|
+
/**
|
|
397
|
+
* ___ | ___
|
|
398
|
+
*/
|
|
342
399
|
Token.BIT_OR = new Token('|', 6);
|
|
400
|
+
/**
|
|
401
|
+
* ___ ^ ___
|
|
402
|
+
*/
|
|
343
403
|
Token.BIT_XOR = new Token('^', 7);
|
|
404
|
+
/**
|
|
405
|
+
* ___ | ___
|
|
406
|
+
*/
|
|
344
407
|
Token.BIT_AND = new Token('&', 8);
|
|
408
|
+
/**
|
|
409
|
+
* ___ << ___
|
|
410
|
+
*/
|
|
345
411
|
Token.SHL = new Token('<<', 11);
|
|
412
|
+
/**
|
|
413
|
+
* ___ >> ___
|
|
414
|
+
*/
|
|
346
415
|
Token.SAR = new Token('>>', 11);
|
|
416
|
+
/**
|
|
417
|
+
* ___ >>> ___
|
|
418
|
+
*/
|
|
347
419
|
Token.SHR = new Token('>>>', 11);
|
|
420
|
+
/**
|
|
421
|
+
* ___ * ___
|
|
422
|
+
*/
|
|
348
423
|
Token.MUL = new Token('*', 13);
|
|
424
|
+
/**
|
|
425
|
+
* ___ / ___
|
|
426
|
+
*/
|
|
349
427
|
Token.DIV = new Token('/', 13);
|
|
428
|
+
/**
|
|
429
|
+
* ___ % ___
|
|
430
|
+
*/
|
|
350
431
|
Token.MOD = new Token('%', 13);
|
|
432
|
+
/**
|
|
433
|
+
* ___ %% ___
|
|
434
|
+
*/
|
|
351
435
|
Token.MODULO = new Token('%%', 13);
|
|
436
|
+
/**
|
|
437
|
+
* ___ > ___
|
|
438
|
+
*/
|
|
352
439
|
Token.LARGER = new Token('>?', 13);
|
|
440
|
+
/**
|
|
441
|
+
* ___ > ___
|
|
442
|
+
*/
|
|
353
443
|
Token.SMALLER = new Token('<?', 13);
|
|
444
|
+
/**
|
|
445
|
+
* ___ ** ___
|
|
446
|
+
*/
|
|
354
447
|
Token.EXP = new Token('**', 14);
|
|
448
|
+
/**
|
|
449
|
+
* ___ + ___
|
|
450
|
+
*/
|
|
355
451
|
Token.ADD = new Token('+', 12);
|
|
452
|
+
/**
|
|
453
|
+
* ___ - ___
|
|
454
|
+
*/
|
|
356
455
|
Token.SUB = new Token('-', 12);
|
|
456
|
+
/**
|
|
457
|
+
* ! ___
|
|
458
|
+
*/
|
|
357
459
|
Token.NOT = new Token('!', 0);
|
|
460
|
+
/**
|
|
461
|
+
* ~ ___
|
|
462
|
+
*/
|
|
358
463
|
Token.BIT_NOT = new Token('~', 0);
|
|
464
|
+
/**
|
|
465
|
+
* ___ < ___
|
|
466
|
+
*/
|
|
359
467
|
Token.LT = new Token('<', 10);
|
|
468
|
+
/**
|
|
469
|
+
* ___ > ___
|
|
470
|
+
*/
|
|
360
471
|
Token.GT = new Token('>', 10);
|
|
472
|
+
/**
|
|
473
|
+
* ___++
|
|
474
|
+
*
|
|
475
|
+
* ++___
|
|
476
|
+
*/
|
|
361
477
|
Token.INC = new Token('++', 0);
|
|
478
|
+
/**
|
|
479
|
+
* ___--
|
|
480
|
+
*
|
|
481
|
+
* --___
|
|
482
|
+
*/
|
|
362
483
|
Token.DEC = new Token('--', 0);
|
|
484
|
+
/**
|
|
485
|
+
* ___ == ___
|
|
486
|
+
*/
|
|
363
487
|
Token.EQ = new Token('==', 9);
|
|
488
|
+
/**
|
|
489
|
+
* ___ === ___
|
|
490
|
+
*/
|
|
364
491
|
Token.EQ_STRICT = new Token('===', 9);
|
|
492
|
+
/**
|
|
493
|
+
* ___ != ___
|
|
494
|
+
*/
|
|
365
495
|
Token.NE = new Token('!=', 9);
|
|
496
|
+
/**
|
|
497
|
+
* ___ !== ___
|
|
498
|
+
*/
|
|
366
499
|
Token.NE_STRICT = new Token('!==', 9);
|
|
500
|
+
/**
|
|
501
|
+
* ___ <= ___
|
|
502
|
+
*/
|
|
367
503
|
Token.LTE = new Token('<=', 10);
|
|
504
|
+
/**
|
|
505
|
+
* ___ >= ___
|
|
506
|
+
*/
|
|
368
507
|
Token.GTE = new Token('>=', 10);
|
|
508
|
+
/**
|
|
509
|
+
* ___ <=> ___
|
|
510
|
+
*/
|
|
369
511
|
Token.SPACESHIP = new Token('<=>', 10);
|
|
512
|
+
/**
|
|
513
|
+
* ___ = ___
|
|
514
|
+
*/
|
|
370
515
|
Token.ASSIGN = new Token('=', 2);
|
|
516
|
+
/**
|
|
517
|
+
* ___ += ___
|
|
518
|
+
*/
|
|
371
519
|
Token.ADD_ASSIGN = new Token('+=', 2);
|
|
520
|
+
/**
|
|
521
|
+
* ___ -= ___
|
|
522
|
+
*/
|
|
372
523
|
Token.SUB_ASSIGN = new Token('-=', 2);
|
|
524
|
+
/**
|
|
525
|
+
* ___ *= ___
|
|
526
|
+
*/
|
|
373
527
|
Token.MUL_ASSIGN = new Token('*=', 2);
|
|
528
|
+
/**
|
|
529
|
+
* ___ /= ___
|
|
530
|
+
*/
|
|
374
531
|
Token.DIV_ASSIGN = new Token('/=', 2);
|
|
532
|
+
/**
|
|
533
|
+
* ___ %= ___
|
|
534
|
+
*/
|
|
375
535
|
Token.MOD_ASSIGN = new Token('%=', 2);
|
|
536
|
+
/**
|
|
537
|
+
* ___ %% ___
|
|
538
|
+
*/
|
|
376
539
|
Token.MODULO_ASSIGN = new Token('%%=', 2);
|
|
540
|
+
/**
|
|
541
|
+
* ___ > ___
|
|
542
|
+
*/
|
|
377
543
|
Token.LARGER_ASSIGN = new Token('>?=', 2);
|
|
544
|
+
/**
|
|
545
|
+
* ___ > ___
|
|
546
|
+
*/
|
|
378
547
|
Token.SMALLER_ASSIGN = new Token('<?=', 2);
|
|
548
|
+
/**
|
|
549
|
+
* ___ **= ___
|
|
550
|
+
*/
|
|
379
551
|
Token.EXP_ASSIGN = new Token('**=', 2);
|
|
552
|
+
/**
|
|
553
|
+
* ___ ^= ___
|
|
554
|
+
*/
|
|
380
555
|
Token.BIT_XOR_ASSIGN = new Token('^=', 2);
|
|
556
|
+
/**
|
|
557
|
+
* ___ &= ___
|
|
558
|
+
*/
|
|
381
559
|
Token.BIT_AND_ASSIGN = new Token('&=', 2);
|
|
560
|
+
/**
|
|
561
|
+
* ___ |= ___
|
|
562
|
+
*/
|
|
382
563
|
Token.BIT_OR_ASSIGN = new Token('|=', 2);
|
|
564
|
+
/**
|
|
565
|
+
* ___ &&= ___
|
|
566
|
+
*/
|
|
383
567
|
Token.AND_ASSIGN = new Token('&&=', 2);
|
|
568
|
+
/**
|
|
569
|
+
* ___ ||= ___
|
|
570
|
+
*/
|
|
384
571
|
Token.OR_ASSIGN = new Token('||=', 2);
|
|
572
|
+
/**
|
|
573
|
+
* ___ ??= ___
|
|
574
|
+
*/
|
|
385
575
|
Token.NULLISH_ASSIGN = new Token('??=', 2);
|
|
576
|
+
/**
|
|
577
|
+
* ___ <<= ___
|
|
578
|
+
*/
|
|
386
579
|
Token.SHL_ASSIGN = new Token('<<=', 2);
|
|
580
|
+
/**
|
|
581
|
+
* ___ >>= ___
|
|
582
|
+
*/
|
|
387
583
|
Token.SAR_ASSIGN = new Token('>>=', 2);
|
|
584
|
+
/**
|
|
585
|
+
* ___ >>>= ___
|
|
586
|
+
*/
|
|
388
587
|
Token.SHR_ASSIGN = new Token('>>>=', 2);
|
|
588
|
+
/**
|
|
589
|
+
* ___ . ___
|
|
590
|
+
*/
|
|
389
591
|
Token.PERIOD = new Token('.', 0);
|
|
592
|
+
/**
|
|
593
|
+
* ___ ?. ___
|
|
594
|
+
*
|
|
595
|
+
* ___?.[___]
|
|
596
|
+
*
|
|
597
|
+
* ___?.()
|
|
598
|
+
*/
|
|
390
599
|
Token.QUESTION_PERIOD = new Token('?.', 0);
|
|
600
|
+
/**
|
|
601
|
+
* ___ :: ___
|
|
602
|
+
*/
|
|
391
603
|
Token.BIND = new Token('::', 0);
|
|
604
|
+
/**
|
|
605
|
+
* ___ ?:: ___
|
|
606
|
+
*
|
|
607
|
+
* ___?::[___]
|
|
608
|
+
*
|
|
609
|
+
* ___?::()
|
|
610
|
+
*/
|
|
392
611
|
Token.QUESTION_BIND = new Token('?::', 0);
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
Token.
|
|
397
|
-
|
|
398
|
-
|
|
612
|
+
/**
|
|
613
|
+
* (
|
|
614
|
+
*/
|
|
615
|
+
Token.LPAREN = new Token('(', 0);
|
|
616
|
+
/**
|
|
617
|
+
* )
|
|
618
|
+
*/
|
|
619
|
+
Token.RPAREN = new Token(')', 0);
|
|
620
|
+
/**
|
|
621
|
+
* [
|
|
622
|
+
*/
|
|
623
|
+
Token.LBRACK = new Token('[', 0);
|
|
624
|
+
/**
|
|
625
|
+
* ]
|
|
626
|
+
*/
|
|
627
|
+
Token.RBRACK = new Token(']', 0);
|
|
628
|
+
/**
|
|
629
|
+
* {
|
|
630
|
+
*/
|
|
631
|
+
Token.LBRACE = new Token('{', 0);
|
|
632
|
+
/**
|
|
633
|
+
* }
|
|
634
|
+
*/
|
|
635
|
+
Token.RBRACE = new Token('}', 0);
|
|
636
|
+
/**
|
|
637
|
+
* :
|
|
638
|
+
*/
|
|
399
639
|
Token.COLON = new Token(':', 0);
|
|
640
|
+
/**
|
|
641
|
+
* ...
|
|
642
|
+
*/
|
|
400
643
|
Token.ELLIPSIS = new Token('...', 0);
|
|
644
|
+
/**
|
|
645
|
+
* ;
|
|
646
|
+
*/
|
|
401
647
|
Token.SEMICOLON = new Token(';', 0);
|
|
648
|
+
/**
|
|
649
|
+
* end of source
|
|
650
|
+
*/
|
|
402
651
|
Token.EOS = new Token('EOS', 0);
|
|
652
|
+
/**
|
|
653
|
+
* =>
|
|
654
|
+
*/
|
|
403
655
|
Token.ARROW = new Token('=>', 0);
|
|
656
|
+
/**
|
|
657
|
+
* ___, ___, ___
|
|
658
|
+
*/
|
|
404
659
|
Token.COMMA = new Token(',', 1);
|
|
405
660
|
Token.ASYNC = new Token('async', 0);
|
|
406
661
|
Token.AWAIT = new Token('await', 0);
|
|
@@ -456,7 +711,20 @@ Token.NUMBER = new Token('NUMBER', 0);
|
|
|
456
711
|
Token.BIGINT = new Token('BIGINT', 0);
|
|
457
712
|
Token.STRING = new Token('STRING', 0);
|
|
458
713
|
Token.IDENTIFIER = new Token('IDENTIFIER', 0);
|
|
459
|
-
|
|
714
|
+
/**
|
|
715
|
+
* TEMPLATE_SPAN ::
|
|
716
|
+
*
|
|
717
|
+
* ` LiteralChars* ${
|
|
718
|
+
* | } LiteralChars* ${
|
|
719
|
+
*/
|
|
720
|
+
Token.TEMPLATE_SPAN = new Token('TEMPLATE_SPAN', 0);
|
|
721
|
+
/**
|
|
722
|
+
* TEMPLATE_TAIL ::
|
|
723
|
+
*
|
|
724
|
+
* ` LiteralChars* `
|
|
725
|
+
* | } LiteralChar* `
|
|
726
|
+
*/
|
|
727
|
+
Token.TEMPLATE_TAIL = new Token('TEMPLATE_TAIL', 0);
|
|
460
728
|
Token.ILLEGAL = new Token('ILLEGAL', 0);
|
|
461
729
|
Token.ESCAPED_KEYWORD = new Token('ESCAPED_KEYWORD', 0);
|
|
462
730
|
Token.WHITESPACE = new Token('WHITESPACE', 0);
|
|
@@ -476,7 +744,7 @@ export class TokenExpression {
|
|
|
476
744
|
return this.token !== type;
|
|
477
745
|
}
|
|
478
746
|
test(func) {
|
|
479
|
-
return func(this.token);
|
|
747
|
+
return func(this.token, this.value);
|
|
480
748
|
}
|
|
481
749
|
toString() {
|
|
482
750
|
return JSON.stringify(this);
|