meriyah 4.5.0 → 6.0.0

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 (81) hide show
  1. package/CHANGELOG.md +415 -445
  2. package/README.md +52 -34
  3. package/dist/meriyah.cjs +9203 -8807
  4. package/dist/meriyah.min.mjs +1 -0
  5. package/dist/{meriyah.esm.js → meriyah.mjs} +9203 -8807
  6. package/dist/meriyah.umd.js +9203 -8807
  7. package/dist/meriyah.umd.min.js +1 -1
  8. package/dist/src/chars.d.ts +135 -135
  9. package/dist/src/common.d.ts +225 -200
  10. package/dist/src/common.d.ts.map +1 -1
  11. package/dist/src/errors.d.ts +197 -187
  12. package/dist/src/errors.d.ts.map +1 -1
  13. package/dist/src/estree.d.ts +524 -507
  14. package/dist/src/estree.d.ts.map +1 -1
  15. package/dist/src/lexer/charClassifier.d.ts +24 -24
  16. package/dist/src/lexer/charClassifier.d.ts.map +1 -1
  17. package/dist/src/lexer/comments.d.ts +14 -14
  18. package/dist/src/lexer/common.d.ts +25 -26
  19. package/dist/src/lexer/common.d.ts.map +1 -1
  20. package/dist/src/lexer/decodeHTML.d.ts +1 -1
  21. package/dist/src/lexer/decodeHTML.d.ts.map +1 -1
  22. package/dist/src/lexer/identifier.d.ts +8 -8
  23. package/dist/src/lexer/identifier.d.ts.map +1 -1
  24. package/dist/src/lexer/index.d.ts +9 -9
  25. package/dist/src/lexer/index.d.ts.map +1 -1
  26. package/dist/src/lexer/jsx.d.ts +6 -6
  27. package/dist/src/lexer/jsx.d.ts.map +1 -1
  28. package/dist/src/lexer/numeric.d.ts +5 -5
  29. package/dist/src/lexer/numeric.d.ts.map +1 -1
  30. package/dist/src/lexer/regexp.d.ts +3 -3
  31. package/dist/src/lexer/regexp.d.ts.map +1 -1
  32. package/dist/src/lexer/scan.d.ts +6 -6
  33. package/dist/src/lexer/scan.d.ts.map +1 -1
  34. package/dist/src/lexer/string.d.ts +12 -12
  35. package/dist/src/lexer/string.d.ts.map +1 -1
  36. package/dist/src/lexer/template.d.ts +4 -4
  37. package/dist/src/lexer/template.d.ts.map +1 -1
  38. package/dist/src/meriyah.d.ts +7 -7
  39. package/dist/src/meriyah.d.ts.map +1 -1
  40. package/dist/src/parser.d.ts +119 -118
  41. package/dist/src/parser.d.ts.map +1 -1
  42. package/dist/src/token.d.ts +167 -167
  43. package/dist/src/token.d.ts.map +1 -1
  44. package/dist/src/unicode.d.ts +5 -5
  45. package/package.json +44 -48
  46. package/dist/meriyah.amd.js +0 -8854
  47. package/dist/meriyah.amd.min.js +0 -1
  48. package/dist/meriyah.cjs.js +0 -8852
  49. package/dist/meriyah.cjs.min.js +0 -1
  50. package/dist/meriyah.esm.min.js +0 -1
  51. package/dist/meriyah.esm.min.mjs +0 -1
  52. package/dist/meriyah.esm.mjs +0 -8846
  53. package/dist/meriyah.iife.js +0 -8857
  54. package/dist/meriyah.iife.min.js +0 -1
  55. package/dist/meriyah.min.cjs +0 -1
  56. package/dist/meriyah.system.js +0 -8860
  57. package/dist/meriyah.system.min.js +0 -1
  58. package/dist/meriyah.umd.cjs +0 -8858
  59. package/dist/meriyah.umd.es5.js +0 -8927
  60. package/dist/meriyah.umd.es5.min.js +0 -1
  61. package/dist/meriyah.umd.min.cjs +0 -1
  62. package/src/chars.ts +0 -155
  63. package/src/common.ts +0 -841
  64. package/src/errors.ts +0 -419
  65. package/src/estree.ts +0 -817
  66. package/src/lexer/charClassifier.ts +0 -449
  67. package/src/lexer/comments.ts +0 -178
  68. package/src/lexer/common.ts +0 -140
  69. package/src/lexer/decodeHTML.ts +0 -2186
  70. package/src/lexer/identifier.ts +0 -196
  71. package/src/lexer/index.ts +0 -32
  72. package/src/lexer/jsx.ts +0 -126
  73. package/src/lexer/numeric.ts +0 -259
  74. package/src/lexer/regexp.ts +0 -156
  75. package/src/lexer/scan.ts +0 -655
  76. package/src/lexer/string.ts +0 -242
  77. package/src/lexer/template.ts +0 -108
  78. package/src/meriyah.ts +0 -29
  79. package/src/parser.ts +0 -9210
  80. package/src/token.ts +0 -307
  81. package/src/unicode.ts +0 -36
@@ -1,449 +0,0 @@
1
- import { unicodeLookup } from '../unicode';
2
- import { Chars } from '../chars';
3
-
4
- export const enum CharFlags {
5
- None = 0,
6
- IdentifierStart = 1 << 0,
7
- IdentifierPart = 1 << 1,
8
- KeywordCandidate = 1 << 2,
9
- LineTerminator = 1 << 3, // ECMA-262 11.3 Line Terminators
10
- Decimal = 1 << 4,
11
- Octal = 1 << 5,
12
- Hex = 1 << 6,
13
- Binary = 1 << 7,
14
- Exponent = 1 << 8,
15
- ImplicitOctalDigits = 1 << 9,
16
- CarriageReturn = 1 << 10,
17
- LineFeed = 1 << 11,
18
- Underscore = 1 << 12,
19
- StringLiteral = 1 << 13,
20
- JSXToken = 1 << 14,
21
- Hyphen = 1 << 15,
22
- }
23
-
24
- /**
25
- * Lookup table for mapping a codepoint to a set of flags
26
- */
27
- export const CharTypes = [
28
- CharFlags.None /* 0x00 */,
29
- CharFlags.None /* 0x01 */,
30
- CharFlags.None /* 0x02 */,
31
- CharFlags.None /* 0x03 */,
32
- CharFlags.None /* 0x04 */,
33
- CharFlags.None /* 0x05 */,
34
- CharFlags.None /* 0x06 */,
35
- CharFlags.None /* 0x07 */,
36
- CharFlags.None /* 0x08 */,
37
- CharFlags.None /* 0x09 */,
38
- CharFlags.LineTerminator | CharFlags.CarriageReturn /* 0x0A */,
39
- CharFlags.None /* 0x0B */,
40
- CharFlags.None /* 0x0C */,
41
- CharFlags.LineTerminator | CharFlags.LineFeed /* 0x0D */,
42
- CharFlags.None /* 0x0E */,
43
- CharFlags.None /* 0x0F */,
44
- CharFlags.None /* 0x10 */,
45
- CharFlags.None /* 0x11 */,
46
- CharFlags.None /* 0x12 */,
47
- CharFlags.None /* 0x13 */,
48
- CharFlags.None /* 0x14 */,
49
- CharFlags.None /* 0x15 */,
50
- CharFlags.None /* 0x16 */,
51
- CharFlags.None /* 0x17 */,
52
- CharFlags.None /* 0x18 */,
53
- CharFlags.None /* 0x19 */,
54
- CharFlags.None /* 0x1A */,
55
- CharFlags.None /* 0x1B */,
56
- CharFlags.None /* 0x1C */,
57
- CharFlags.None /* 0x1D */,
58
- CharFlags.None /* 0x1E */,
59
- CharFlags.None /* 0x1F */,
60
- CharFlags.None /* 0x20 */,
61
- CharFlags.None /* 0x21 ! */,
62
- CharFlags.StringLiteral /* 0x22 */,
63
- CharFlags.None /* 0x23 # */,
64
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x24 $ */,
65
- CharFlags.None /* 0x25 % */,
66
- CharFlags.None /* 0x26 & */,
67
- CharFlags.StringLiteral /* 0x27 */,
68
- CharFlags.None /* 0x28 */,
69
- CharFlags.None /* 0x29 */,
70
- CharFlags.None /* 0x2A */,
71
- CharFlags.Exponent /* 0x2B */,
72
- CharFlags.None /* 0x2C */,
73
- CharFlags.Exponent | CharFlags.Hyphen /* 0x2D */,
74
- CharFlags.None /* 0x2E */,
75
- CharFlags.None /* 0x2F */,
76
- CharFlags.IdentifierPart | CharFlags.Decimal | CharFlags.Binary | CharFlags.Octal | CharFlags.Hex /* 0x30 0 */,
77
- CharFlags.IdentifierPart | CharFlags.Decimal | CharFlags.Binary | CharFlags.Octal | CharFlags.Hex /* 0x31 1 */,
78
- CharFlags.IdentifierPart | CharFlags.Decimal | CharFlags.Octal | CharFlags.Hex /* 0x32 2 */,
79
- CharFlags.IdentifierPart | CharFlags.Decimal | CharFlags.Octal | CharFlags.Hex /* 0x33 3 */,
80
- CharFlags.IdentifierPart | CharFlags.Decimal | CharFlags.Octal | CharFlags.Hex /* 0x34 4 */,
81
- CharFlags.IdentifierPart | CharFlags.Decimal | CharFlags.Octal | CharFlags.Hex /* 0x35 5 */,
82
- CharFlags.IdentifierPart | CharFlags.Decimal | CharFlags.Octal | CharFlags.Hex /* 0x36 6 */,
83
- CharFlags.IdentifierPart | CharFlags.Decimal | CharFlags.Octal | CharFlags.Hex /* 0x37 7 */,
84
- CharFlags.IdentifierPart | CharFlags.Decimal | CharFlags.ImplicitOctalDigits | CharFlags.Hex /* 0x38 8 */,
85
- CharFlags.IdentifierPart | CharFlags.Decimal | CharFlags.ImplicitOctalDigits | CharFlags.Hex /* 0x39 9 */,
86
- CharFlags.None /* 0x3A */,
87
- CharFlags.None /* 0x3B */,
88
- CharFlags.JSXToken /* 0x3C < */,
89
- CharFlags.None /* 0x3D = */,
90
- CharFlags.None /* 0x3E > */,
91
- CharFlags.None /* 0x3F */,
92
- CharFlags.None /* 0x40 @ */,
93
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.Hex /* 0x41 A */,
94
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.Hex /* 0x42 B */,
95
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.Hex /* 0x43 C */,
96
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.Hex /* 0x44 D */,
97
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.Hex /* 0x45 E */,
98
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.Hex /* 0x46 F */,
99
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x47 G */,
100
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x48 H */,
101
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x49 I */,
102
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x4A J */,
103
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x4B K */,
104
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x4C L */,
105
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x4D M */,
106
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x4E N */,
107
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x4F O */,
108
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x50 P */,
109
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x51 Q */,
110
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x52 R */,
111
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x53 S */,
112
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x54 T */,
113
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x55 U */,
114
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x56 V */,
115
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x57 W */,
116
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x58 X */,
117
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x59 Y */,
118
- CharFlags.IdentifierStart | CharFlags.IdentifierPart /* 0x5A Z */,
119
- CharFlags.None /* 0x5B */,
120
- CharFlags.IdentifierStart /* 0x5C */,
121
- CharFlags.None /* 0x5D */,
122
- CharFlags.None /* 0x5E */,
123
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.Underscore/* 0x5F _ */,
124
- CharFlags.None /* 0x60 */,
125
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate | CharFlags.Hex /* 0x61 a */,
126
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate | CharFlags.Hex /* 0x62 b */,
127
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate | CharFlags.Hex /* 0x63 c */,
128
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate | CharFlags.Hex /* 0x64 d */,
129
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate | CharFlags.Hex /* 0x65 e */,
130
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate | CharFlags.Hex /* 0x66 f */,
131
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x67 g */,
132
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x68 h */,
133
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x69 i */,
134
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x6A j */,
135
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x6B k */,
136
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x6C l */,
137
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x6D m */,
138
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x6E n */,
139
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x6F o */,
140
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x70 p */,
141
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x71 q */,
142
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x72 r */,
143
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x73 s */,
144
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x74 t */,
145
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x75 u */,
146
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x76 v */,
147
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x77 w */,
148
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x78 x */,
149
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x79 y */,
150
- CharFlags.IdentifierStart | CharFlags.IdentifierPart | CharFlags.KeywordCandidate /* 0x7A z */,
151
- CharFlags.JSXToken /* 0x7B */,
152
- CharFlags.None /* 0x7C */,
153
- CharFlags.None /* 0x7D */,
154
- CharFlags.None /* 0x7E */,
155
- CharFlags.None /* 0x7F */
156
- ];
157
-
158
- export const isIdStart = [
159
- 0,
160
- 0,
161
- 0,
162
- 0,
163
- 0,
164
- 0,
165
- 0,
166
- 0,
167
- 0,
168
- 0,
169
- 0,
170
- 0,
171
- 0,
172
- 0,
173
- 0,
174
- 0,
175
- 0,
176
- 0,
177
- 0,
178
- 0,
179
- 0,
180
- 0,
181
- 0,
182
- 0,
183
- 0,
184
- 0,
185
- 0,
186
- 0,
187
- 0,
188
- 0,
189
- 0,
190
- 0,
191
- 0,
192
- 0,
193
- 0,
194
- 0,
195
- 1,
196
- 0,
197
- 0,
198
- 0,
199
- 0,
200
- 0,
201
- 0,
202
- 0,
203
- 0,
204
- 0,
205
- 0,
206
- 0,
207
- 0,
208
- 0,
209
- 0,
210
- 0,
211
- 0,
212
- 0,
213
- 0,
214
- 0,
215
- 0,
216
- 0,
217
- 0,
218
- 0,
219
- 0,
220
- 0,
221
- 0,
222
- 0,
223
- 0,
224
- 1,
225
- 1,
226
- 1,
227
- 1,
228
- 1,
229
- 1,
230
- 1,
231
- 1,
232
- 1,
233
- 1,
234
- 1,
235
- 1,
236
- 1,
237
- 1,
238
- 1,
239
- 1,
240
- 1,
241
- 1,
242
- 1,
243
- 1,
244
- 1,
245
- 1,
246
- 1,
247
- 1,
248
- 1,
249
- 1,
250
- 0,
251
- 0,
252
- 0,
253
- 0,
254
- 1,
255
- 0,
256
- 1,
257
- 1,
258
- 1,
259
- 1,
260
- 1,
261
- 1,
262
- 1,
263
- 1,
264
- 1,
265
- 1,
266
- 1,
267
- 1,
268
- 1,
269
- 1,
270
- 1,
271
- 1,
272
- 1,
273
- 1,
274
- 1,
275
- 1,
276
- 1,
277
- 1,
278
- 1,
279
- 1,
280
- 1,
281
- 1,
282
- 0,
283
- 0,
284
- 0,
285
- 0,
286
- 0
287
- ];
288
-
289
- export const isIdPart = [
290
- 0,
291
- 0,
292
- 0,
293
- 0,
294
- 0,
295
- 0,
296
- 0,
297
- 0,
298
- 0,
299
- 0,
300
- 0,
301
- 0,
302
- 0,
303
- 0,
304
- 0,
305
- 0,
306
- 0,
307
- 0,
308
- 0,
309
- 0,
310
- 0,
311
- 0,
312
- 0,
313
- 0,
314
- 0,
315
- 0,
316
- 0,
317
- 0,
318
- 0,
319
- 0,
320
- 0,
321
- 0,
322
- 0,
323
- 0,
324
- 0,
325
- 0,
326
- 1,
327
- 0,
328
- 0,
329
- 0,
330
- 0,
331
- 0,
332
- 0,
333
- 0,
334
- 0,
335
- 0,
336
- 0,
337
- 0,
338
- 1,
339
- 1,
340
- 1,
341
- 1,
342
- 1,
343
- 1,
344
- 1,
345
- 1,
346
- 1,
347
- 1,
348
- 0,
349
- 0,
350
- 0,
351
- 0,
352
- 0,
353
- 0,
354
- 0,
355
- 1,
356
- 1,
357
- 1,
358
- 1,
359
- 1,
360
- 1,
361
- 1,
362
- 1,
363
- 1,
364
- 1,
365
- 1,
366
- 1,
367
- 1,
368
- 1,
369
- 1,
370
- 1,
371
- 1,
372
- 1,
373
- 1,
374
- 1,
375
- 1,
376
- 1,
377
- 1,
378
- 1,
379
- 1,
380
- 1,
381
- 0,
382
- 0,
383
- 0,
384
- 0,
385
- 1,
386
- 0,
387
- 1,
388
- 1,
389
- 1,
390
- 1,
391
- 1,
392
- 1,
393
- 1,
394
- 1,
395
- 1,
396
- 1,
397
- 1,
398
- 1,
399
- 1,
400
- 1,
401
- 1,
402
- 1,
403
- 1,
404
- 1,
405
- 1,
406
- 1,
407
- 1,
408
- 1,
409
- 1,
410
- 1,
411
- 1,
412
- 1,
413
- 0,
414
- 0,
415
- 0,
416
- 0,
417
- 0
418
- ];
419
-
420
-
421
- export function isIdentifierStart(code: number): number {
422
- /*
423
- * ES2020 11.6 IdentifierStart
424
- * $ (dollar sign)
425
- * _ (underscore)
426
- * or any character with the Unicode property «ID_Start».
427
- *
428
- * We use a lookup table for small and thus common characters for speed.
429
- */
430
- return code <= 0x7F
431
- ? isIdStart[code]
432
- : (unicodeLookup[(code >>> 5) + 34816] >>> code) & 31 & 1;
433
- }
434
-
435
- export function isIdentifierPart(code: number): any {
436
- /*
437
- * ES2020 11.6 IdentifierPart
438
- * $ (dollar sign)
439
- * _ (underscore)
440
- * <ZWNJ>
441
- * <ZWJ>
442
- * or any character with the Unicode property «ID_Continue».
443
- *
444
- * We use a lookup table for small and thus common characters for speed.
445
- */
446
- return code <= 0x7F
447
- ? isIdPart[code]
448
- : (unicodeLookup[(code >>> 5) + 0] >>> code) & 31 & 1 || (code === Chars.ZeroWidthJoiner || code === Chars.ZeroWidthNonJoiner);
449
- }
@@ -1,178 +0,0 @@
1
- import { advanceChar, LexerState, scanNewLine, consumeLineFeed } from './common';
2
- import { CharTypes, CharFlags } from './charClassifier';
3
- import { Chars } from '../chars';
4
- import { Context, ParserState } from '../common';
5
- import { report, Errors } from '../errors';
6
-
7
- export const enum CommentType {
8
- Single,
9
- Multi,
10
- HTMLOpen,
11
- HTMLClose,
12
- HashBang
13
- }
14
-
15
- export const CommentTypes = ['SingleLine', 'MultiLine', 'HTMLOpen', 'HTMLClose', 'HashbangComment'];
16
-
17
- /**
18
- * Skips hasbang (stage 3)
19
- *
20
- * @param parser Parser object
21
- */
22
- export function skipHashBang(parser: ParserState): void {
23
- // HashbangComment ::
24
- // #! SingleLineCommentChars_opt
25
- const source = parser.source;
26
- if (parser.currentChar === Chars.Hash && source.charCodeAt(parser.index + 1) === Chars.Exclamation) {
27
- advanceChar(parser);
28
- advanceChar(parser);
29
- skipSingleLineComment(
30
- parser,
31
- source,
32
- LexerState.None,
33
- CommentType.HashBang,
34
- parser.tokenPos,
35
- parser.linePos,
36
- parser.colPos
37
- );
38
- }
39
- }
40
-
41
- export function skipSingleHTMLComment(
42
- parser: ParserState,
43
- source: string,
44
- state: LexerState,
45
- context: Context,
46
- type: CommentType,
47
- start: number,
48
- line: number,
49
- column: number
50
- ): LexerState {
51
- if (context & Context.Module) report(parser, Errors.Unexpected);
52
- return skipSingleLineComment(parser, source, state, type, start, line, column);
53
- }
54
-
55
- /**
56
- * Skips single line comment
57
- *
58
- * @param parser Parser object
59
- * @param state Lexer state
60
- */
61
- export function skipSingleLineComment(
62
- parser: ParserState,
63
- source: string,
64
- state: LexerState,
65
- type: CommentType,
66
- start: number,
67
- line: number,
68
- column: number
69
- ): LexerState {
70
- const { index } = parser;
71
- parser.tokenPos = parser.index;
72
- parser.linePos = parser.line;
73
- parser.colPos = parser.column;
74
- while (parser.index < parser.end) {
75
- if (CharTypes[parser.currentChar] & CharFlags.LineTerminator) {
76
- const isCR = parser.currentChar === Chars.CarriageReturn;
77
- scanNewLine(parser);
78
- if (isCR && parser.index < parser.end && parser.currentChar === Chars.LineFeed)
79
- parser.currentChar = source.charCodeAt(++parser.index);
80
- break;
81
- } else if ((parser.currentChar ^ Chars.LineSeparator) <= 1) {
82
- scanNewLine(parser);
83
- break;
84
- }
85
- advanceChar(parser);
86
- parser.tokenPos = parser.index;
87
- parser.linePos = parser.line;
88
- parser.colPos = parser.column;
89
- }
90
- if (parser.onComment) {
91
- const loc = {
92
- start: {
93
- line,
94
- column
95
- },
96
- end: {
97
- line: parser.linePos,
98
- column: parser.colPos
99
- }
100
- };
101
- // For Single, start before "//",
102
- // For HTMLOpen, start before "<!--",
103
- // For HTMLClose, start before "\n-->"
104
- parser.onComment(CommentTypes[type & 0xff], source.slice(index, parser.tokenPos), start, parser.tokenPos, loc);
105
- }
106
- return state | LexerState.NewLine;
107
- }
108
-
109
- /**
110
- * Skips multiline comment
111
- *
112
- * @param parser Parser object
113
- * @param state Lexer state
114
- */
115
- export function skipMultiLineComment(parser: ParserState, source: string, state: LexerState): LexerState | void {
116
- const { index } = parser;
117
- while (parser.index < parser.end) {
118
- if (parser.currentChar < 0x2b) {
119
- let skippedOneAsterisk = false;
120
- while (parser.currentChar === Chars.Asterisk) {
121
- if (!skippedOneAsterisk) {
122
- state &= ~LexerState.LastIsCR;
123
- skippedOneAsterisk = true;
124
- }
125
- if (advanceChar(parser) === Chars.Slash) {
126
- advanceChar(parser);
127
- if (parser.onComment) {
128
- const loc = {
129
- start: {
130
- line: parser.linePos,
131
- column: parser.colPos
132
- },
133
- end: {
134
- line: parser.line,
135
- column: parser.column
136
- }
137
- };
138
- parser.onComment(
139
- CommentTypes[CommentType.Multi & 0xff],
140
- source.slice(index, parser.index - 2),
141
- index - 2, // start before '/*'
142
- parser.index, // end after '*/'
143
- loc
144
- );
145
- }
146
- parser.tokenPos = parser.index;
147
- parser.linePos = parser.line;
148
- parser.colPos = parser.column;
149
- return state;
150
- }
151
- }
152
-
153
- if (skippedOneAsterisk) {
154
- continue;
155
- }
156
-
157
- if (CharTypes[parser.currentChar] & CharFlags.LineTerminator) {
158
- if (parser.currentChar === Chars.CarriageReturn) {
159
- state |= LexerState.NewLine | LexerState.LastIsCR;
160
- scanNewLine(parser);
161
- } else {
162
- consumeLineFeed(parser, state);
163
- state = (state & ~LexerState.LastIsCR) | LexerState.NewLine;
164
- }
165
- } else {
166
- advanceChar(parser);
167
- }
168
- } else if ((parser.currentChar ^ Chars.LineSeparator) <= 1) {
169
- state = (state & ~LexerState.LastIsCR) | LexerState.NewLine;
170
- scanNewLine(parser);
171
- } else {
172
- state &= ~LexerState.LastIsCR;
173
- advanceChar(parser);
174
- }
175
- }
176
-
177
- report(parser, Errors.UnterminatedComment);
178
- }