@scinorandex/sparse 0.0.2 → 0.0.3

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 (62) hide show
  1. package/README.md +2 -2
  2. package/dist/cli.js +2 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/generator.d.ts +4 -1
  5. package/dist/generator.js +47 -32
  6. package/dist/generator.js.map +1 -1
  7. package/dist/index.d.ts +3 -2
  8. package/dist/index.js +5 -5
  9. package/dist/index.js.map +1 -1
  10. package/dist/meta/common.d.ts +57 -0
  11. package/dist/meta/common.js +62 -0
  12. package/dist/meta/common.js.map +1 -0
  13. package/dist/meta/handwritten.d.ts +12 -0
  14. package/dist/{grammarParser.js → meta/handwritten.js} +24 -24
  15. package/dist/meta/handwritten.js.map +1 -0
  16. package/dist/meta/selfhosted.d.ts +23 -0
  17. package/dist/meta/selfhosted.js +206 -0
  18. package/dist/meta/selfhosted.js.map +1 -0
  19. package/dist/meta/states.d.ts +1580 -0
  20. package/dist/meta/states.js +1493 -0
  21. package/dist/meta/states.js.map +1 -0
  22. package/dist/parser.d.ts +16 -5
  23. package/dist/parser.js +25 -7
  24. package/dist/parser.js.map +1 -1
  25. package/dist/{tableParser.d.ts → table/handwritten.d.ts} +1 -1
  26. package/dist/{tableParser.js → table/handwritten.js} +2 -2
  27. package/dist/table/handwritten.js.map +1 -0
  28. package/dist/table/selfhosted.d.ts +2 -0
  29. package/dist/table/selfhosted.js +65 -0
  30. package/dist/table/selfhosted.js.map +1 -0
  31. package/dist/table/states.d.ts +592 -0
  32. package/dist/table/states.js +593 -0
  33. package/dist/table/states.js.map +1 -0
  34. package/dist/utils/Result.d.ts +1 -1
  35. package/dist/utils/errorWindowBuilder.d.ts +1 -1
  36. package/example/LoLang/example.ts +14 -7
  37. package/example/complicated/grammar.txt +37 -0
  38. package/example/math/example.ts +1 -1
  39. package/example/selfhosted/01-meta-grammar.txt +10 -0
  40. package/example/selfhosted/02-table-grammar.txt +6 -0
  41. package/example/selfhosted/codegen-meta.ts +1489 -0
  42. package/example/selfhosted/codegen-table.ts +589 -0
  43. package/example/selfhosted/example.ts +39 -0
  44. package/package.json +3 -3
  45. package/src/cli.ts +1 -1
  46. package/src/generator.ts +52 -34
  47. package/src/index.ts +3 -2
  48. package/src/meta/common.ts +74 -0
  49. package/src/{grammarParser.ts → meta/handwritten.ts} +17 -21
  50. package/src/meta/selfhosted.ts +272 -0
  51. package/src/meta/states.ts +1489 -0
  52. package/src/parser.ts +53 -19
  53. package/src/{tableParser.ts → table/handwritten.ts} +5 -5
  54. package/src/table/selfhosted.ts +67 -0
  55. package/src/table/states.ts +589 -0
  56. package/src/utils/Result.ts +1 -1
  57. package/src/utils/errorWindowBuilder.ts +1 -1
  58. package/tsconfig.build.json +30 -0
  59. package/tsconfig.json +6 -6
  60. package/dist/grammarParser.d.ts +0 -27
  61. package/dist/grammarParser.js.map +0 -1
  62. package/dist/tableParser.js.map +0 -1
@@ -0,0 +1,593 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.selfhosted = exports.productions = exports.states = void 0;
4
+ exports.states = [
5
+ {
6
+ "[L_BRACKET]": {
7
+ "type": "shift",
8
+ "value": 5
9
+ },
10
+ "[L_ANGLE]": {
11
+ "type": "shift",
12
+ "value": 6
13
+ },
14
+ "<PROGRAM>": {
15
+ "type": "goto",
16
+ "value": 1
17
+ },
18
+ "<STATES>": {
19
+ "type": "goto",
20
+ "value": 2
21
+ },
22
+ "<ITEMS>": {
23
+ "type": "goto",
24
+ "value": 3
25
+ },
26
+ "<ITEM>": {
27
+ "type": "goto",
28
+ "value": 4
29
+ }
30
+ },
31
+ {
32
+ "[EOF]": {
33
+ "type": "reduce",
34
+ "value": 0
35
+ }
36
+ },
37
+ {
38
+ "[EOF]": {
39
+ "type": "shift",
40
+ "value": 7
41
+ }
42
+ },
43
+ {
44
+ "[EOF]": {
45
+ "type": "reduce",
46
+ "value": 2
47
+ },
48
+ "[L_BRACKET]": {
49
+ "type": "shift",
50
+ "value": 5
51
+ },
52
+ "[L_ANGLE]": {
53
+ "type": "shift",
54
+ "value": 6
55
+ },
56
+ "<STATES>": {
57
+ "type": "goto",
58
+ "value": 8
59
+ },
60
+ "<ITEMS>": {
61
+ "type": "goto",
62
+ "value": 3
63
+ },
64
+ "<ITEM>": {
65
+ "type": "goto",
66
+ "value": 4
67
+ }
68
+ },
69
+ {
70
+ "[EOF]": {
71
+ "type": "reduce",
72
+ "value": 4
73
+ },
74
+ "[L_BRACKET]": {
75
+ "type": "reduce",
76
+ "value": 4
77
+ },
78
+ "[L_ANGLE]": {
79
+ "type": "reduce",
80
+ "value": 4
81
+ },
82
+ "[COMMA]": {
83
+ "type": "shift",
84
+ "value": 9
85
+ }
86
+ },
87
+ {
88
+ "[IDENTIFIER]": {
89
+ "type": "shift",
90
+ "value": 10
91
+ }
92
+ },
93
+ {
94
+ "[IDENTIFIER]": {
95
+ "type": "shift",
96
+ "value": 11
97
+ }
98
+ },
99
+ {
100
+ "[EOF]": {
101
+ "type": "reduce",
102
+ "value": 1
103
+ }
104
+ },
105
+ {
106
+ "[EOF]": {
107
+ "type": "reduce",
108
+ "value": 3
109
+ }
110
+ },
111
+ {
112
+ "[L_BRACKET]": {
113
+ "type": "shift",
114
+ "value": 5
115
+ },
116
+ "[L_ANGLE]": {
117
+ "type": "shift",
118
+ "value": 6
119
+ },
120
+ "<ITEMS>": {
121
+ "type": "goto",
122
+ "value": 12
123
+ },
124
+ "<ITEM>": {
125
+ "type": "goto",
126
+ "value": 13
127
+ }
128
+ },
129
+ {
130
+ "[R_BRACKET]": {
131
+ "type": "shift",
132
+ "value": 14
133
+ }
134
+ },
135
+ {
136
+ "[R_ANGLE]": {
137
+ "type": "shift",
138
+ "value": 15
139
+ }
140
+ },
141
+ {
142
+ "[EOF]": {
143
+ "type": "reduce",
144
+ "value": 5
145
+ },
146
+ "[L_BRACKET]": {
147
+ "type": "reduce",
148
+ "value": 5
149
+ },
150
+ "[L_ANGLE]": {
151
+ "type": "reduce",
152
+ "value": 5
153
+ }
154
+ },
155
+ {
156
+ "[EOF]": {
157
+ "type": "reduce",
158
+ "value": 4
159
+ },
160
+ "[L_BRACKET]": {
161
+ "type": "reduce",
162
+ "value": 4
163
+ },
164
+ "[L_ANGLE]": {
165
+ "type": "reduce",
166
+ "value": 4
167
+ },
168
+ "[COMMA]": {
169
+ "type": "shift",
170
+ "value": 16
171
+ }
172
+ },
173
+ {
174
+ "[EQUALS]": {
175
+ "type": "shift",
176
+ "value": 17
177
+ }
178
+ },
179
+ {
180
+ "[EQUALS]": {
181
+ "type": "shift",
182
+ "value": 18
183
+ }
184
+ },
185
+ {
186
+ "[L_BRACKET]": {
187
+ "type": "shift",
188
+ "value": 5
189
+ },
190
+ "[L_ANGLE]": {
191
+ "type": "shift",
192
+ "value": 6
193
+ },
194
+ "<ITEMS>": {
195
+ "type": "goto",
196
+ "value": 19
197
+ },
198
+ "<ITEM>": {
199
+ "type": "goto",
200
+ "value": 13
201
+ }
202
+ },
203
+ {
204
+ "[IDENTIFIER]": {
205
+ "type": "shift",
206
+ "value": 20
207
+ }
208
+ },
209
+ {
210
+ "[NUMBER]": {
211
+ "type": "shift",
212
+ "value": 21
213
+ }
214
+ },
215
+ {
216
+ "[EOF]": {
217
+ "type": "reduce",
218
+ "value": 5
219
+ },
220
+ "[L_BRACKET]": {
221
+ "type": "reduce",
222
+ "value": 5
223
+ },
224
+ "[L_ANGLE]": {
225
+ "type": "reduce",
226
+ "value": 5
227
+ }
228
+ },
229
+ {
230
+ "[EOF]": {
231
+ "type": "reduce",
232
+ "value": 6
233
+ },
234
+ "[L_BRACKET]": {
235
+ "type": "reduce",
236
+ "value": 6
237
+ },
238
+ "[L_ANGLE]": {
239
+ "type": "reduce",
240
+ "value": 6
241
+ },
242
+ "[COMMA]": {
243
+ "type": "reduce",
244
+ "value": 6
245
+ }
246
+ },
247
+ {
248
+ "[EOF]": {
249
+ "type": "reduce",
250
+ "value": 7
251
+ },
252
+ "[L_BRACKET]": {
253
+ "type": "reduce",
254
+ "value": 7
255
+ },
256
+ "[L_ANGLE]": {
257
+ "type": "reduce",
258
+ "value": 7
259
+ },
260
+ "[COMMA]": {
261
+ "type": "reduce",
262
+ "value": 7
263
+ }
264
+ }
265
+ ];
266
+ exports.productions = [
267
+ {
268
+ "lhs": {
269
+ "column": 1,
270
+ "lexeme": "S",
271
+ "line": 1,
272
+ "type": 0
273
+ },
274
+ "identifier": "<S>",
275
+ "name": null,
276
+ "originalProductionIndex": 0,
277
+ "rhs": [
278
+ {
279
+ "type": "variable",
280
+ "token": {
281
+ "column": 6,
282
+ "lexeme": "PROGRAM",
283
+ "line": 1,
284
+ "type": 0
285
+ },
286
+ "identifier": "<PROGRAM>",
287
+ "name": null
288
+ }
289
+ ]
290
+ },
291
+ {
292
+ "lhs": {
293
+ "column": 1,
294
+ "lexeme": "PROGRAM",
295
+ "line": 2,
296
+ "type": 0
297
+ },
298
+ "identifier": "<PROGRAM>",
299
+ "name": "program",
300
+ "originalProductionIndex": 1,
301
+ "rhs": [
302
+ {
303
+ "type": "variable",
304
+ "token": {
305
+ "column": 21,
306
+ "lexeme": "STATES",
307
+ "line": 2,
308
+ "type": 0
309
+ },
310
+ "identifier": "<STATES>",
311
+ "name": "states"
312
+ },
313
+ {
314
+ "type": "terminal",
315
+ "token": {
316
+ "column": 38,
317
+ "lexeme": "EOF",
318
+ "line": 2,
319
+ "type": 0
320
+ },
321
+ "identifier": "[EOF]",
322
+ "name": null
323
+ }
324
+ ]
325
+ },
326
+ {
327
+ "lhs": {
328
+ "column": 1,
329
+ "lexeme": "STATES",
330
+ "line": 3,
331
+ "type": 0
332
+ },
333
+ "identifier": "<STATES>",
334
+ "name": "states",
335
+ "originalProductionIndex": 2,
336
+ "rhs": [
337
+ {
338
+ "type": "variable",
339
+ "token": {
340
+ "column": 19,
341
+ "lexeme": "ITEMS",
342
+ "line": 3,
343
+ "type": 0
344
+ },
345
+ "identifier": "<ITEMS>",
346
+ "name": "state"
347
+ }
348
+ ]
349
+ },
350
+ {
351
+ "lhs": {
352
+ "column": 1,
353
+ "lexeme": "STATES",
354
+ "line": 3,
355
+ "type": 0
356
+ },
357
+ "identifier": "<STATES>",
358
+ "name": "states",
359
+ "originalProductionIndex": 2,
360
+ "rhs": [
361
+ {
362
+ "type": "variable",
363
+ "token": {
364
+ "column": 19,
365
+ "lexeme": "ITEMS",
366
+ "line": 3,
367
+ "type": 0
368
+ },
369
+ "identifier": "<ITEMS>",
370
+ "name": "state"
371
+ },
372
+ {
373
+ "type": "variable",
374
+ "token": {
375
+ "column": 35,
376
+ "lexeme": "STATES",
377
+ "line": 3,
378
+ "type": 0
379
+ },
380
+ "identifier": "<STATES>",
381
+ "name": "rest"
382
+ }
383
+ ]
384
+ },
385
+ {
386
+ "lhs": {
387
+ "column": 1,
388
+ "lexeme": "ITEMS",
389
+ "line": 4,
390
+ "type": 0
391
+ },
392
+ "identifier": "<ITEMS>",
393
+ "name": "items",
394
+ "originalProductionIndex": 3,
395
+ "rhs": [
396
+ {
397
+ "type": "variable",
398
+ "token": {
399
+ "column": 17,
400
+ "lexeme": "ITEM",
401
+ "line": 4,
402
+ "type": 0
403
+ },
404
+ "identifier": "<ITEM>",
405
+ "name": "item"
406
+ }
407
+ ]
408
+ },
409
+ {
410
+ "lhs": {
411
+ "column": 1,
412
+ "lexeme": "ITEMS",
413
+ "line": 4,
414
+ "type": 0
415
+ },
416
+ "identifier": "<ITEMS>",
417
+ "name": "items",
418
+ "originalProductionIndex": 3,
419
+ "rhs": [
420
+ {
421
+ "type": "variable",
422
+ "token": {
423
+ "column": 17,
424
+ "lexeme": "ITEM",
425
+ "line": 4,
426
+ "type": 0
427
+ },
428
+ "identifier": "<ITEM>",
429
+ "name": "item"
430
+ },
431
+ {
432
+ "type": "terminal",
433
+ "token": {
434
+ "column": 31,
435
+ "lexeme": "COMMA",
436
+ "line": 4,
437
+ "type": 0
438
+ },
439
+ "identifier": "[COMMA]",
440
+ "name": null
441
+ },
442
+ {
443
+ "type": "variable",
444
+ "token": {
445
+ "column": 39,
446
+ "lexeme": "ITEMS",
447
+ "line": 4,
448
+ "type": 0
449
+ },
450
+ "identifier": "<ITEMS>",
451
+ "name": "rest"
452
+ }
453
+ ]
454
+ },
455
+ {
456
+ "lhs": {
457
+ "column": 1,
458
+ "lexeme": "ITEM",
459
+ "line": 5,
460
+ "type": 0
461
+ },
462
+ "identifier": "<ITEM>",
463
+ "name": "terminal",
464
+ "originalProductionIndex": 4,
465
+ "rhs": [
466
+ {
467
+ "type": "terminal",
468
+ "token": {
469
+ "column": 19,
470
+ "lexeme": "L_BRACKET",
471
+ "line": 5,
472
+ "type": 0
473
+ },
474
+ "identifier": "[L_BRACKET]",
475
+ "name": null
476
+ },
477
+ {
478
+ "type": "terminal",
479
+ "token": {
480
+ "column": 31,
481
+ "lexeme": "IDENTIFIER",
482
+ "line": 5,
483
+ "type": 0
484
+ },
485
+ "identifier": "[IDENTIFIER]",
486
+ "name": "name"
487
+ },
488
+ {
489
+ "type": "terminal",
490
+ "token": {
491
+ "column": 50,
492
+ "lexeme": "R_BRACKET",
493
+ "line": 5,
494
+ "type": 0
495
+ },
496
+ "identifier": "[R_BRACKET]",
497
+ "name": null
498
+ },
499
+ {
500
+ "type": "terminal",
501
+ "token": {
502
+ "column": 62,
503
+ "lexeme": "EQUALS",
504
+ "line": 5,
505
+ "type": 0
506
+ },
507
+ "identifier": "[EQUALS]",
508
+ "name": null
509
+ },
510
+ {
511
+ "type": "terminal",
512
+ "token": {
513
+ "column": 71,
514
+ "lexeme": "IDENTIFIER",
515
+ "line": 5,
516
+ "type": 0
517
+ },
518
+ "identifier": "[IDENTIFIER]",
519
+ "name": "action"
520
+ }
521
+ ]
522
+ },
523
+ {
524
+ "lhs": {
525
+ "column": 1,
526
+ "lexeme": "ITEM",
527
+ "line": 6,
528
+ "type": 0
529
+ },
530
+ "identifier": "<ITEM>",
531
+ "name": "variable",
532
+ "originalProductionIndex": 5,
533
+ "rhs": [
534
+ {
535
+ "type": "terminal",
536
+ "token": {
537
+ "column": 19,
538
+ "lexeme": "L_ANGLE",
539
+ "line": 6,
540
+ "type": 0
541
+ },
542
+ "identifier": "[L_ANGLE]",
543
+ "name": null
544
+ },
545
+ {
546
+ "type": "terminal",
547
+ "token": {
548
+ "column": 29,
549
+ "lexeme": "IDENTIFIER",
550
+ "line": 6,
551
+ "type": 0
552
+ },
553
+ "identifier": "[IDENTIFIER]",
554
+ "name": "name"
555
+ },
556
+ {
557
+ "type": "terminal",
558
+ "token": {
559
+ "column": 48,
560
+ "lexeme": "R_ANGLE",
561
+ "line": 6,
562
+ "type": 0
563
+ },
564
+ "identifier": "[R_ANGLE]",
565
+ "name": null
566
+ },
567
+ {
568
+ "type": "terminal",
569
+ "token": {
570
+ "column": 58,
571
+ "lexeme": "EQUALS",
572
+ "line": 6,
573
+ "type": 0
574
+ },
575
+ "identifier": "[EQUALS]",
576
+ "name": null
577
+ },
578
+ {
579
+ "type": "terminal",
580
+ "token": {
581
+ "column": 67,
582
+ "lexeme": "NUMBER",
583
+ "line": 6,
584
+ "type": 0
585
+ },
586
+ "identifier": "[NUMBER]",
587
+ "name": "state"
588
+ }
589
+ ]
590
+ }
591
+ ];
592
+ exports.selfhosted = { states: exports.states, productions: exports.productions };
593
+ //# sourceMappingURL=states.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"states.js","sourceRoot":"","sources":["../../src/table/states.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { GrammarToken } from "src/grammarParser";
1
+ import { GrammarToken } from "../meta/common";
2
2
  export type Result<T> = {
3
3
  success: true;
4
4
  value: T;
@@ -1,2 +1,2 @@
1
- import type { GrammarToken } from "src/grammarParser";
1
+ import { GrammarToken } from "../meta/common";
2
2
  export declare const buildErrorWindow: (file: string, token: GrammarToken) => string;
@@ -38,12 +38,15 @@ enum LoLangTokenType {
38
38
  // INCREMENTATION OPERATOR
39
39
  DOUBLE_PLUS, DOUBLE_MINUS,
40
40
 
41
- STRING_LITERAL, NUMBER_LITERAL, BOOLEAN_LITERAL, NULL_LITERAL
41
+ STRING_LITERAL, NUMBER_LITERAL, BOOLEAN_LITERAL, NULL_LITERAL,
42
+ SINGLE_LINE_COMMENT, MULTI_LINE_COMMENT
42
43
  }
43
44
 
44
45
  const lexerGenerator = new Slex<LoLangTokenType, {}>({
45
46
  EOF_TYPE: LoLangTokenType.EOF,
46
47
  isHigherPrecedence: ({ current, next }) => current === LoLangTokenType.IDENTIFIER,
48
+ // Specifies that SINGLE_LINE_COMMENT and MULTI_LINE_COMMENT tokens should be ignored.
49
+ ignoreTokens: [LoLangTokenType.SINGLE_LINE_COMMENT, LoLangTokenType.MULTI_LINE_COMMENT],
47
50
  });
48
51
  {
49
52
  lexerGenerator.addRule("plus", "$+", LoLangTokenType.PLUS);
@@ -91,7 +94,7 @@ const lexerGenerator = new Slex<LoLangTokenType, {}>({
91
94
  lexerGenerator.addRule("letter", "${lowercase}|${uppercase}");
92
95
  lexerGenerator.addRule(
93
96
  "symbols",
94
- "$ | $! | $@ | $# | $$ | $% | $^ | $& | $* | $( | $) | ${ | $[ | $} | $] | $; | $: | $< | $, | $. | $> | $? | $/ | $` | $~ | $- | $_ | $+ | $= | $|"
97
+ "$ | $! | $@ | $# | $$ | $% | $^ | $& | $* | $( | $) | ${ | $[ | $} | $] | $; | $: | $< | $, | $. | $> | $? | $/ | $` | $~ | $- | $_ | $+ | $= | $|",
95
98
  );
96
99
  lexerGenerator.addRule("escape_character", "$\\ | $\n | $\t | $\r | $\\$\" | $\\$'");
97
100
  lexerGenerator.addRule("digit", "0|1|2|3|4|5|6|7|8|9");
@@ -108,12 +111,12 @@ const lexerGenerator = new Slex<LoLangTokenType, {}>({
108
111
  "string_literal",
109
112
  "$\"(${character} | $')*$\" | $'(${character} | $\")*$'",
110
113
  LoLangTokenType.STRING_LITERAL,
111
- (str) => str.substring(1, str.length - 1).replaceAll("\\n", "\n")
114
+ (str) => str.substring(1, str.length - 1).replaceAll("\\n", "\n"),
112
115
  );
113
116
  lexerGenerator.addRule(
114
117
  "number_literal",
115
118
  "${float_number}|${decimal_number}|${octal_number}|${binary_number}|${hexadecimal_number}",
116
- LoLangTokenType.NUMBER_LITERAL
119
+ LoLangTokenType.NUMBER_LITERAL,
117
120
  );
118
121
  lexerGenerator.addRule("boolean_literal", "faker|shaker", LoLangTokenType.BOOLEAN_LITERAL);
119
122
  lexerGenerator.addRule("null_literal", "cooldown", LoLangTokenType.NULL_LITERAL);
@@ -148,6 +151,10 @@ const lexerGenerator = new Slex<LoLangTokenType, {}>({
148
151
  lexerGenerator.addRule("string_type", "message", LoLangTokenType.STRING_TYPE);
149
152
  lexerGenerator.addRule("void_type", "passive", LoLangTokenType.VOID_TYPE);
150
153
  lexerGenerator.addRule("identifier", "(${letter}|$_)(${letter}|${digit}|$_)*", LoLangTokenType.IDENTIFIER);
154
+
155
+ // handle single and multi line comments
156
+ lexerGenerator.addRule("single_line_comment", "$/$/(($\n)!)*", LoLangTokenType.SINGLE_LINE_COMMENT);
157
+ lexerGenerator.addRule("multi_line_comment", "$/$*(($*)!|($*($/)!))*$*$/", LoLangTokenType.MULTI_LINE_COMMENT);
151
158
  }
152
159
 
153
160
  type StringifiedNode = (StringifiedNode | string)[];
@@ -167,7 +174,7 @@ async function main() {
167
174
  const parserGenerator = Sparse.fromProductions<LoLangTokenType, {}, Node>({ productions, toStringifiedTokenType });
168
175
 
169
176
  const parser = parserGenerator.generate(lexer, {
170
- reducer: (input, productionIndex) => new Node(input),
177
+ reducer: (_, { input }) => new Node(input),
171
178
  recover({ lexer, statesStack, symbolsStack, isSafe, addError, crash, finish, states }) {
172
179
  let token = lexer.peekNextToken();
173
180
  const currentState = statesStack.peek();
@@ -187,7 +194,7 @@ async function main() {
187
194
  LoLangTokenType.SEMICOLON,
188
195
  ";",
189
196
  new ColumnAndRow(token.column, token.line),
190
- token.metadata
197
+ token.metadata,
191
198
  );
192
199
 
193
200
  if (action) {
@@ -196,7 +203,7 @@ async function main() {
196
203
  statesStack.push(action.value);
197
204
  symbolsStack.push({ type: "token", token: newToken });
198
205
  addError(
199
- `Expected SEMICOLON but received ${LoLangTokenType[token.type]}. SEMICOLON was automatically inserted.`
206
+ `Expected SEMICOLON but received ${LoLangTokenType[token.type]}. SEMICOLON was automatically inserted.`,
200
207
  );
201
208
  }
202
209