@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.
Files changed (186) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +4 -3
  3. package/api/abstract.d.ts +5 -6
  4. package/api/abstract.js +8 -3
  5. package/api/abstract.js.map +1 -1
  6. package/api/class/class.d.ts +227 -0
  7. package/api/class/class.js +662 -0
  8. package/api/class/class.js.map +1 -0
  9. package/api/class/decorator.d.ts +20 -0
  10. package/api/class/decorator.js +48 -0
  11. package/api/class/decorator.js.map +1 -0
  12. package/api/computing/call.d.ts +3 -1
  13. package/api/computing/call.js +16 -4
  14. package/api/computing/call.js.map +1 -1
  15. package/api/computing/debugger.d.ts +15 -0
  16. package/api/computing/debugger.js +35 -0
  17. package/api/computing/debugger.js.map +1 -0
  18. package/api/computing/new.d.ts +2 -1
  19. package/api/computing/new.js +4 -0
  20. package/api/computing/new.js.map +1 -1
  21. package/api/computing/rest.d.ts +6 -6
  22. package/api/computing/rest.js +5 -2
  23. package/api/computing/rest.js.map +1 -1
  24. package/api/computing/return.d.ts +6 -1
  25. package/api/computing/return.js +8 -0
  26. package/api/computing/return.js.map +1 -1
  27. package/api/computing/spread.d.ts +2 -1
  28. package/api/computing/spread.js +5 -2
  29. package/api/computing/spread.js.map +1 -1
  30. package/api/computing/throw.d.ts +6 -1
  31. package/api/computing/throw.js +7 -0
  32. package/api/computing/throw.js.map +1 -1
  33. package/api/computing/yield.d.ts +2 -1
  34. package/api/computing/yield.js +3 -0
  35. package/api/computing/yield.js.map +1 -1
  36. package/api/definition/array.d.ts +12 -12
  37. package/api/definition/array.js +31 -25
  38. package/api/definition/array.js.map +1 -1
  39. package/api/definition/bind.d.ts +8 -2
  40. package/api/definition/bind.js +7 -1
  41. package/api/definition/bind.js.map +1 -1
  42. package/api/definition/function.d.ts +40 -51
  43. package/api/definition/function.js +292 -309
  44. package/api/definition/function.js.map +1 -1
  45. package/api/definition/member.d.ts +2 -2
  46. package/api/definition/member.js +1 -1
  47. package/api/definition/member.js.map +1 -1
  48. package/api/definition/object.d.ts +15 -12
  49. package/api/definition/object.js +43 -13
  50. package/api/definition/object.js.map +1 -1
  51. package/api/definition/statement.d.ts +2 -2
  52. package/api/definition/statement.js +7 -3
  53. package/api/definition/statement.js.map +1 -1
  54. package/api/definition/values.d.ts +44 -50
  55. package/api/definition/values.js +87 -149
  56. package/api/definition/values.js.map +1 -1
  57. package/api/deserialize/deserialize.d.ts +7 -1
  58. package/api/deserialize/deserialize.js +9 -1
  59. package/api/deserialize/deserialize.js.map +1 -1
  60. package/api/deserialize/type-store.d.ts +2 -2
  61. package/api/deserialize/type-store.js.map +1 -1
  62. package/api/expression.d.ts +159 -18
  63. package/api/expression.js.map +1 -1
  64. package/api/index.d.ts +2 -0
  65. package/api/index.js +2 -0
  66. package/api/index.js.map +1 -1
  67. package/api/module/common.d.ts +29 -0
  68. package/api/module/common.js +71 -0
  69. package/api/module/common.js.map +1 -0
  70. package/api/module/export.d.ts +129 -25
  71. package/api/module/export.js +333 -58
  72. package/api/module/export.js.map +1 -1
  73. package/api/module/import.d.ts +114 -25
  74. package/api/module/import.js +279 -68
  75. package/api/module/import.js.map +1 -1
  76. package/api/operators/assignment.d.ts +2 -2
  77. package/api/operators/assignment.js +1 -1
  78. package/api/operators/assignment.js.map +1 -1
  79. package/api/operators/await.d.ts +2 -2
  80. package/api/operators/await.js +1 -1
  81. package/api/operators/await.js.map +1 -1
  82. package/api/operators/binary.d.ts +2 -2
  83. package/api/operators/binary.js +1 -1
  84. package/api/operators/binary.js.map +1 -1
  85. package/api/operators/chaining.d.ts +2 -2
  86. package/api/operators/chaining.js +1 -1
  87. package/api/operators/chaining.js.map +1 -1
  88. package/api/operators/comma.d.ts +2 -2
  89. package/api/operators/comma.js +2 -2
  90. package/api/operators/comma.js.map +1 -1
  91. package/api/operators/grouping.d.ts +9 -2
  92. package/api/operators/grouping.js +8 -1
  93. package/api/operators/grouping.js.map +1 -1
  94. package/api/operators/logical.d.ts +2 -2
  95. package/api/operators/logical.js +1 -1
  96. package/api/operators/logical.js.map +1 -1
  97. package/api/operators/pipeline.d.ts +14 -2
  98. package/api/operators/pipeline.js +13 -1
  99. package/api/operators/pipeline.js.map +1 -1
  100. package/api/operators/ternary.d.ts +2 -2
  101. package/api/operators/ternary.js +1 -1
  102. package/api/operators/ternary.js.map +1 -1
  103. package/api/operators/unary.d.ts +3 -3
  104. package/api/operators/unary.js +7 -3
  105. package/api/operators/unary.js.map +1 -1
  106. package/api/operators/update.d.ts +2 -2
  107. package/api/operators/update.js +1 -1
  108. package/api/operators/update.js.map +1 -1
  109. package/api/{app/program.d.ts → program.d.ts} +8 -9
  110. package/api/program.js +45 -0
  111. package/api/program.js.map +1 -0
  112. package/api/statement/control/block.d.ts +8 -5
  113. package/api/statement/control/block.js +26 -23
  114. package/api/statement/control/block.js.map +1 -1
  115. package/api/statement/control/empty.d.ts +8 -1
  116. package/api/statement/control/empty.js +7 -0
  117. package/api/statement/control/empty.js.map +1 -1
  118. package/api/statement/control/if.d.ts +7 -2
  119. package/api/statement/control/if.js +6 -1
  120. package/api/statement/control/if.js.map +1 -1
  121. package/api/statement/control/switch.d.ts +10 -5
  122. package/api/statement/control/switch.js +22 -9
  123. package/api/statement/control/switch.js.map +1 -1
  124. package/api/statement/control/terminate.d.ts +46 -13
  125. package/api/statement/control/terminate.js +89 -20
  126. package/api/statement/control/terminate.js.map +1 -1
  127. package/api/statement/declarations/declares.d.ts +17 -16
  128. package/api/statement/declarations/declares.js +24 -19
  129. package/api/statement/declarations/declares.js.map +1 -1
  130. package/api/statement/iterations/for.d.ts +10 -5
  131. package/api/statement/iterations/for.js +42 -23
  132. package/api/statement/iterations/for.js.map +1 -1
  133. package/api/statement/iterations/while.d.ts +9 -3
  134. package/api/statement/iterations/while.js +27 -13
  135. package/api/statement/iterations/while.js.map +1 -1
  136. package/api/utils.d.ts +5 -0
  137. package/api/utils.js +4 -0
  138. package/api/utils.js.map +1 -0
  139. package/package.json +5 -5
  140. package/scope/finalizer.d.ts +4 -0
  141. package/scope/finalizer.js +11 -0
  142. package/scope/finalizer.js.map +1 -0
  143. package/scope/proxy.d.ts +5 -3
  144. package/scope/proxy.js +26 -26
  145. package/scope/proxy.js.map +1 -1
  146. package/scope/scope.d.ts +108 -51
  147. package/scope/scope.js +72 -134
  148. package/scope/scope.js.map +1 -1
  149. package/scope/stack.d.ts +117 -26
  150. package/scope/stack.js +154 -102
  151. package/scope/stack.js.map +1 -1
  152. package/v8/enums.d.ts +204 -0
  153. package/v8/enums.js +406 -0
  154. package/v8/enums.js.map +1 -0
  155. package/v8/index.d.ts +2 -1
  156. package/v8/index.js +2 -1
  157. package/v8/index.js.map +1 -1
  158. package/v8/inline.d.ts +213 -0
  159. package/v8/inline.js +2375 -0
  160. package/v8/inline.js.map +1 -0
  161. package/v8/nodes.d.ts +8 -7
  162. package/v8/nodes.js +39 -64
  163. package/v8/nodes.js.map +1 -1
  164. package/v8/parser.d.ts +49 -151
  165. package/v8/parser.js +839 -1607
  166. package/v8/parser.js.map +1 -1
  167. package/v8/stream.d.ts +39 -3
  168. package/v8/stream.js +685 -171
  169. package/v8/stream.js.map +1 -1
  170. package/v8/token.d.ts +244 -9
  171. package/v8/token.js +315 -47
  172. package/v8/token.js.map +1 -1
  173. package/visit/visitor.d.ts +3 -0
  174. package/visit/visitor.js +4 -7
  175. package/visit/visitor.js.map +1 -1
  176. package/api/app/class.d.ts +0 -117
  177. package/api/app/class.js +0 -292
  178. package/api/app/class.js.map +0 -1
  179. package/api/app/program.js +0 -39
  180. package/api/app/program.js.map +0 -1
  181. package/api/module/module.d.ts +0 -26
  182. package/api/module/module.js +0 -63
  183. package/api/module/module.js.map +0 -1
  184. package/v8/app.d.ts +0 -0
  185. package/v8/app.js +0 -2
  186. 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.L_PARENTHESES:
9
- case Token.L_BRACKETS:
10
- case Token.L_CURLY:
11
- case Token.R_CURLY:
12
- case Token.R_BRACKETS:
13
- case Token.R_PARENTHESES:
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.L_PARENTHESES:
22
- case Token.L_BRACKETS:
23
- case Token.L_CURLY:
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.R_CURLY:
32
- case Token.R_BRACKETS:
33
- case Token.R_PARENTHESES:
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.R_CURLY:
42
- return Token.L_CURLY;
43
- case Token.R_BRACKETS:
44
- return Token.L_BRACKETS;
45
- case Token.R_PARENTHESES:
46
- return Token.L_PARENTHESES;
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.L_CURLY:
53
- return Token.R_CURLY;
54
- case Token.L_BRACKETS:
55
- return Token.R_BRACKETS;
56
- case Token.L_PARENTHESES:
57
- return Token.R_PARENTHESES;
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.R_CURLY:
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.TEMPLATE_LITERALS:
147
+ case Token.TEMPLATE_SPAN:
148
+ case Token.TEMPLATE_TAIL:
146
149
  case Token.PERIOD:
147
- case Token.L_BRACKETS:
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.TEMPLATE_LITERALS:
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.L_CURLY:
162
- case Token.L_BRACKETS:
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.TEMPLATE_LITERALS:
198
+ case Token.TEMPLATE_SPAN:
199
+ case Token.TEMPLATE_TAIL:
179
200
  case Token.PERIOD:
180
- case Token.L_BRACKETS:
201
+ case Token.LBRACK:
181
202
  case Token.QUESTION_PERIOD:
182
- case Token.L_PARENTHESES:
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.isInRange(token.precedence, Token.IDENTIFIER, Token.ASYNC))
350
+ static isValidIdentifier(token, mode, isGenerator, disallowAwait) {
351
+ if (Token.isInRangeIdentifierAndAsync(token))
325
352
  return true;
326
- if (token == Token.AWAIT || token == Token.YIELD)
327
- return false;
328
- return Token.isStrictReservedWord(token) && false;
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
- Token.L_PARENTHESES = new Token('(', 0);
394
- Token.R_PARENTHESES = new Token(')', 0);
395
- Token.L_BRACKETS = new Token('[', 0);
396
- Token.R_BRACKETS = new Token(']', 0);
397
- Token.L_CURLY = new Token('{', 0);
398
- Token.R_CURLY = new Token('}', 0);
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
- Token.TEMPLATE_LITERALS = new Token('TEMPLATE_LITERALS', 0);
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);