treste 2.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 (68) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/INSTALL.md +264 -0
  3. package/LICENSE +22 -0
  4. package/README.md +388 -0
  5. package/README_PT.md +261 -0
  6. package/dist/ast.d.ts +140 -0
  7. package/dist/ast.d.ts.map +1 -0
  8. package/dist/ast.js +3 -0
  9. package/dist/ast.js.map +1 -0
  10. package/dist/cli.d.ts +3 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +201 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/compiler/exe.d.ts +13 -0
  15. package/dist/compiler/exe.d.ts.map +1 -0
  16. package/dist/compiler/exe.js +129 -0
  17. package/dist/compiler/exe.js.map +1 -0
  18. package/dist/compiler/web.d.ts +43 -0
  19. package/dist/compiler/web.d.ts.map +1 -0
  20. package/dist/compiler/web.js +413 -0
  21. package/dist/compiler/web.js.map +1 -0
  22. package/dist/compiler.d.ts +3 -0
  23. package/dist/compiler.d.ts.map +1 -0
  24. package/dist/compiler.js +195 -0
  25. package/dist/compiler.js.map +1 -0
  26. package/dist/errors.d.ts +21 -0
  27. package/dist/errors.d.ts.map +1 -0
  28. package/dist/errors.js +56 -0
  29. package/dist/errors.js.map +1 -0
  30. package/dist/index.d.ts +5 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +26 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/interpreter.d.ts +32 -0
  35. package/dist/interpreter.d.ts.map +1 -0
  36. package/dist/interpreter.js +425 -0
  37. package/dist/interpreter.js.map +1 -0
  38. package/dist/lexer.d.ts +113 -0
  39. package/dist/lexer.d.ts.map +1 -0
  40. package/dist/lexer.js +446 -0
  41. package/dist/lexer.js.map +1 -0
  42. package/dist/module.d.ts +19 -0
  43. package/dist/module.d.ts.map +1 -0
  44. package/dist/module.js +112 -0
  45. package/dist/module.js.map +1 -0
  46. package/dist/parser.d.ts +45 -0
  47. package/dist/parser.d.ts.map +1 -0
  48. package/dist/parser.js +599 -0
  49. package/dist/parser.js.map +1 -0
  50. package/dist/std/array.trest +85 -0
  51. package/dist/std/index.trest +13 -0
  52. package/dist/std/io.trest +17 -0
  53. package/dist/std/math.trest +66 -0
  54. package/dist/std/string.trest +61 -0
  55. package/dist/types.d.ts +29 -0
  56. package/dist/types.d.ts.map +1 -0
  57. package/dist/types.js +86 -0
  58. package/dist/types.js.map +1 -0
  59. package/package.json +101 -0
  60. package/scripts/postbuild.js +90 -0
  61. package/scripts/postinstall.js +89 -0
  62. package/scripts/preinstall.js +92 -0
  63. package/scripts/version.js +52 -0
  64. package/src/std/array.trest +85 -0
  65. package/src/std/index.trest +13 -0
  66. package/src/std/io.trest +17 -0
  67. package/src/std/math.trest +66 -0
  68. package/src/std/string.trest +61 -0
package/dist/parser.js ADDED
@@ -0,0 +1,599 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Parser = void 0;
4
+ const lexer_1 = require("./lexer");
5
+ class Parser {
6
+ constructor(tokens) {
7
+ this.position = 0;
8
+ this.tokens = tokens;
9
+ }
10
+ currentToken() {
11
+ return this.tokens[this.position];
12
+ }
13
+ peekToken() {
14
+ return this.position < this.tokens.length - 1
15
+ ? this.tokens[this.position + 1]
16
+ : this.tokens[this.tokens.length - 1];
17
+ }
18
+ advance() {
19
+ if (this.position < this.tokens.length - 1) {
20
+ this.position++;
21
+ }
22
+ return this.tokens[this.position];
23
+ }
24
+ expect(type, message) {
25
+ const token = this.currentToken();
26
+ if (token.type !== type) {
27
+ throw new Error(message ||
28
+ `Esperado ${type}, mas encontrado ${token.type} na linha ${token.line}, coluna ${token.column}`);
29
+ }
30
+ this.advance();
31
+ return token;
32
+ }
33
+ skipNewlines() {
34
+ while (this.position < this.tokens.length &&
35
+ (this.currentToken().type === lexer_1.TokenType.NEWLINE ||
36
+ this.currentToken().type === lexer_1.TokenType.SEMICOLON)) {
37
+ this.advance();
38
+ }
39
+ }
40
+ parse() {
41
+ const body = [];
42
+ this.skipNewlines();
43
+ while (this.currentToken().type !== lexer_1.TokenType.EOF) {
44
+ const stmt = this.parseStatement();
45
+ if (stmt) {
46
+ body.push(stmt);
47
+ }
48
+ this.skipNewlines();
49
+ }
50
+ return { type: 'Program', body };
51
+ }
52
+ parseStatement() {
53
+ this.skipNewlines();
54
+ const token = this.currentToken();
55
+ switch (token.type) {
56
+ case lexer_1.TokenType.VAR:
57
+ case lexer_1.TokenType.LET:
58
+ case lexer_1.TokenType.CONST:
59
+ return this.parseVariableDeclaration();
60
+ case lexer_1.TokenType.FUNC:
61
+ return this.parseFunctionDeclaration();
62
+ case lexer_1.TokenType.IF:
63
+ return this.parseIfStatement();
64
+ case lexer_1.TokenType.WHILE:
65
+ return this.parseWhileStatement();
66
+ case lexer_1.TokenType.FOR:
67
+ return this.parseForStatement();
68
+ case lexer_1.TokenType.RETURN:
69
+ return this.parseReturnStatement();
70
+ case lexer_1.TokenType.PRINT:
71
+ return this.parsePrintStatement();
72
+ case lexer_1.TokenType.IMPORT:
73
+ return this.parseImportStatement();
74
+ case lexer_1.TokenType.EXPORT:
75
+ return this.parseExportStatement();
76
+ case lexer_1.TokenType.BREAK:
77
+ return this.parseBreakStatement();
78
+ case lexer_1.TokenType.CONTINUE:
79
+ return this.parseContinueStatement();
80
+ case lexer_1.TokenType.TRY:
81
+ return this.parseTryStatement();
82
+ case lexer_1.TokenType.THROW:
83
+ return this.parseThrowStatement();
84
+ case lexer_1.TokenType.NEWLINE:
85
+ case lexer_1.TokenType.SEMICOLON:
86
+ this.advance();
87
+ return null;
88
+ default:
89
+ return this.parseExpressionStatement();
90
+ }
91
+ }
92
+ parseVariableDeclaration() {
93
+ const kind = this.currentToken().value;
94
+ this.advance();
95
+ const name = this.expect(lexer_1.TokenType.IDENTIFIER).value;
96
+ let value;
97
+ if (this.currentToken().type === lexer_1.TokenType.ASSIGN) {
98
+ this.advance();
99
+ value = this.parseExpression();
100
+ }
101
+ this.skipNewlines();
102
+ return {
103
+ type: 'VariableDeclaration',
104
+ kind,
105
+ name,
106
+ value,
107
+ };
108
+ }
109
+ parseFunctionDeclaration() {
110
+ this.expect(lexer_1.TokenType.FUNC);
111
+ const name = this.expect(lexer_1.TokenType.IDENTIFIER).value;
112
+ this.expect(lexer_1.TokenType.LPAREN);
113
+ const params = [];
114
+ if (this.currentToken().type !== lexer_1.TokenType.RPAREN) {
115
+ params.push(this.expect(lexer_1.TokenType.IDENTIFIER).value);
116
+ while (this.currentToken().type === lexer_1.TokenType.COMMA) {
117
+ this.advance();
118
+ params.push(this.expect(lexer_1.TokenType.IDENTIFIER).value);
119
+ }
120
+ }
121
+ this.expect(lexer_1.TokenType.RPAREN);
122
+ const body = this.parseBlockStatement();
123
+ return {
124
+ type: 'FunctionDeclaration',
125
+ name,
126
+ params,
127
+ body,
128
+ };
129
+ }
130
+ parseBlockStatement() {
131
+ this.expect(lexer_1.TokenType.LBRACE);
132
+ this.skipNewlines();
133
+ const body = [];
134
+ while (this.currentToken().type !== lexer_1.TokenType.RBRACE) {
135
+ const stmt = this.parseStatement();
136
+ if (stmt) {
137
+ body.push(stmt);
138
+ }
139
+ this.skipNewlines();
140
+ }
141
+ this.expect(lexer_1.TokenType.RBRACE);
142
+ this.skipNewlines();
143
+ return { type: 'BlockStatement', body };
144
+ }
145
+ parseIfStatement() {
146
+ this.expect(lexer_1.TokenType.IF);
147
+ this.expect(lexer_1.TokenType.LPAREN);
148
+ const condition = this.parseExpression();
149
+ this.expect(lexer_1.TokenType.RPAREN);
150
+ const consequent = this.parseBlockStatement();
151
+ let alternate;
152
+ if (this.currentToken().type === lexer_1.TokenType.ELSE) {
153
+ this.advance();
154
+ if (this.currentToken().type === lexer_1.TokenType.IF) {
155
+ alternate = this.parseIfStatement();
156
+ }
157
+ else {
158
+ alternate = this.parseBlockStatement();
159
+ }
160
+ }
161
+ return {
162
+ type: 'IfStatement',
163
+ condition,
164
+ consequent,
165
+ alternate,
166
+ };
167
+ }
168
+ parseWhileStatement() {
169
+ this.expect(lexer_1.TokenType.WHILE);
170
+ this.expect(lexer_1.TokenType.LPAREN);
171
+ const condition = this.parseExpression();
172
+ this.expect(lexer_1.TokenType.RPAREN);
173
+ const body = this.parseBlockStatement();
174
+ return {
175
+ type: 'WhileStatement',
176
+ condition,
177
+ body,
178
+ };
179
+ }
180
+ parseForStatement() {
181
+ this.expect(lexer_1.TokenType.FOR);
182
+ this.expect(lexer_1.TokenType.LPAREN);
183
+ let init;
184
+ if (this.currentToken().type !== lexer_1.TokenType.SEMICOLON) {
185
+ if (this.currentToken().type === lexer_1.TokenType.VAR ||
186
+ this.currentToken().type === lexer_1.TokenType.LET ||
187
+ this.currentToken().type === lexer_1.TokenType.CONST) {
188
+ init = this.parseVariableDeclaration();
189
+ }
190
+ else {
191
+ init = {
192
+ type: 'ExpressionStatement',
193
+ expression: this.parseExpression(),
194
+ };
195
+ }
196
+ }
197
+ this.expect(lexer_1.TokenType.SEMICOLON);
198
+ let condition;
199
+ if (this.currentToken().type !== lexer_1.TokenType.SEMICOLON) {
200
+ condition = this.parseExpression();
201
+ }
202
+ this.expect(lexer_1.TokenType.SEMICOLON);
203
+ let update;
204
+ if (this.currentToken().type !== lexer_1.TokenType.RPAREN) {
205
+ update = this.parseExpression();
206
+ }
207
+ this.expect(lexer_1.TokenType.RPAREN);
208
+ const body = this.parseBlockStatement();
209
+ return {
210
+ type: 'ForStatement',
211
+ init,
212
+ condition,
213
+ update,
214
+ body,
215
+ };
216
+ }
217
+ parseReturnStatement() {
218
+ this.expect(lexer_1.TokenType.RETURN);
219
+ let argument;
220
+ if (this.currentToken().type !== lexer_1.TokenType.NEWLINE && this.currentToken().type !== lexer_1.TokenType.SEMICOLON) {
221
+ argument = this.parseExpression();
222
+ }
223
+ this.skipNewlines();
224
+ return {
225
+ type: 'ReturnStatement',
226
+ argument,
227
+ };
228
+ }
229
+ parsePrintStatement() {
230
+ this.expect(lexer_1.TokenType.PRINT);
231
+ this.expect(lexer_1.TokenType.LPAREN);
232
+ const args = [];
233
+ if (this.currentToken().type !== lexer_1.TokenType.RPAREN) {
234
+ args.push(this.parseExpression());
235
+ while (this.currentToken().type === lexer_1.TokenType.COMMA) {
236
+ this.advance();
237
+ args.push(this.parseExpression());
238
+ }
239
+ }
240
+ this.expect(lexer_1.TokenType.RPAREN);
241
+ this.skipNewlines();
242
+ return {
243
+ type: 'PrintStatement',
244
+ arguments: args,
245
+ };
246
+ }
247
+ parseExpressionStatement() {
248
+ const expression = this.parseExpression();
249
+ this.skipNewlines();
250
+ return {
251
+ type: 'ExpressionStatement',
252
+ expression,
253
+ };
254
+ }
255
+ parseExpression() {
256
+ return this.parseAssignment();
257
+ }
258
+ parseAssignment() {
259
+ let expr = this.parseLogicalOr();
260
+ if (this.currentToken().type === lexer_1.TokenType.ASSIGN) {
261
+ const operator = this.currentToken().value;
262
+ this.advance();
263
+ const right = this.parseAssignment();
264
+ if (expr.type === 'Identifier' || expr.type === 'IndexExpression') {
265
+ return {
266
+ type: 'AssignmentExpression',
267
+ left: expr,
268
+ operator: '=',
269
+ right,
270
+ };
271
+ }
272
+ throw new Error('Lado esquerdo da atribuição deve ser um identificador');
273
+ }
274
+ return expr;
275
+ }
276
+ parseLogicalOr() {
277
+ let expr = this.parseLogicalAnd();
278
+ while (this.currentToken().type === lexer_1.TokenType.OR) {
279
+ const operator = this.currentToken().value;
280
+ this.advance();
281
+ expr = {
282
+ type: 'BinaryExpression',
283
+ operator,
284
+ left: expr,
285
+ right: this.parseLogicalAnd(),
286
+ };
287
+ }
288
+ return expr;
289
+ }
290
+ parseLogicalAnd() {
291
+ let expr = this.parseEquality();
292
+ while (this.currentToken().type === lexer_1.TokenType.AND) {
293
+ const operator = this.currentToken().value;
294
+ this.advance();
295
+ expr = {
296
+ type: 'BinaryExpression',
297
+ operator,
298
+ left: expr,
299
+ right: this.parseEquality(),
300
+ };
301
+ }
302
+ return expr;
303
+ }
304
+ parseEquality() {
305
+ let expr = this.parseComparison();
306
+ while (this.currentToken().type === lexer_1.TokenType.EQUAL ||
307
+ this.currentToken().type === lexer_1.TokenType.NOT_EQUAL) {
308
+ const operator = this.currentToken().value;
309
+ this.advance();
310
+ expr = {
311
+ type: 'BinaryExpression',
312
+ operator,
313
+ left: expr,
314
+ right: this.parseComparison(),
315
+ };
316
+ }
317
+ return expr;
318
+ }
319
+ parseComparison() {
320
+ let expr = this.parseAddition();
321
+ while (this.currentToken().type === lexer_1.TokenType.LESS ||
322
+ this.currentToken().type === lexer_1.TokenType.LESS_EQUAL ||
323
+ this.currentToken().type === lexer_1.TokenType.GREATER ||
324
+ this.currentToken().type === lexer_1.TokenType.GREATER_EQUAL) {
325
+ const operator = this.currentToken().value;
326
+ this.advance();
327
+ expr = {
328
+ type: 'BinaryExpression',
329
+ operator,
330
+ left: expr,
331
+ right: this.parseAddition(),
332
+ };
333
+ }
334
+ return expr;
335
+ }
336
+ parseAddition() {
337
+ let expr = this.parseMultiplication();
338
+ while (this.currentToken().type === lexer_1.TokenType.PLUS ||
339
+ this.currentToken().type === lexer_1.TokenType.MINUS) {
340
+ const operator = this.currentToken().value;
341
+ this.advance();
342
+ expr = {
343
+ type: 'BinaryExpression',
344
+ operator,
345
+ left: expr,
346
+ right: this.parseMultiplication(),
347
+ };
348
+ }
349
+ return expr;
350
+ }
351
+ parseMultiplication() {
352
+ let expr = this.parseUnary();
353
+ while (this.currentToken().type === lexer_1.TokenType.MULTIPLY ||
354
+ this.currentToken().type === lexer_1.TokenType.DIVIDE ||
355
+ this.currentToken().type === lexer_1.TokenType.MODULO) {
356
+ const operator = this.currentToken().value;
357
+ this.advance();
358
+ expr = {
359
+ type: 'BinaryExpression',
360
+ operator,
361
+ left: expr,
362
+ right: this.parseUnary(),
363
+ };
364
+ }
365
+ return expr;
366
+ }
367
+ parseUnary() {
368
+ if (this.currentToken().type === lexer_1.TokenType.MINUS ||
369
+ this.currentToken().type === lexer_1.TokenType.NOT) {
370
+ const operator = this.currentToken().value;
371
+ this.advance();
372
+ return {
373
+ type: 'UnaryExpression',
374
+ operator,
375
+ argument: this.parseUnary(),
376
+ };
377
+ }
378
+ return this.parsePostfix();
379
+ }
380
+ parsePostfix() {
381
+ let expr = this.parsePrimary();
382
+ while (true) {
383
+ if (this.currentToken().type === lexer_1.TokenType.LPAREN) {
384
+ expr = this.parseCallExpression(expr);
385
+ }
386
+ else if (this.currentToken().type === lexer_1.TokenType.LBRACKET) {
387
+ expr = this.parseIndexExpression(expr);
388
+ }
389
+ else if (this.currentToken().type === lexer_1.TokenType.DOT) {
390
+ this.advance();
391
+ const property = this.expect(lexer_1.TokenType.IDENTIFIER).value;
392
+ expr = {
393
+ type: 'MemberExpression',
394
+ object: expr,
395
+ property,
396
+ computed: false,
397
+ };
398
+ }
399
+ else {
400
+ break;
401
+ }
402
+ }
403
+ return expr;
404
+ }
405
+ parseCallExpression(callee) {
406
+ this.expect(lexer_1.TokenType.LPAREN);
407
+ const args = [];
408
+ if (this.currentToken().type !== lexer_1.TokenType.RPAREN) {
409
+ args.push(this.parseExpression());
410
+ while (this.currentToken().type === lexer_1.TokenType.COMMA) {
411
+ this.advance();
412
+ args.push(this.parseExpression());
413
+ }
414
+ }
415
+ this.expect(lexer_1.TokenType.RPAREN);
416
+ return {
417
+ type: 'CallExpression',
418
+ callee: callee,
419
+ arguments: args,
420
+ };
421
+ }
422
+ parseIndexExpression(object) {
423
+ this.expect(lexer_1.TokenType.LBRACKET);
424
+ const index = this.parseExpression();
425
+ this.expect(lexer_1.TokenType.RBRACKET);
426
+ return {
427
+ type: 'IndexExpression',
428
+ object,
429
+ index,
430
+ };
431
+ }
432
+ parsePrimary() {
433
+ const token = this.currentToken();
434
+ switch (token.type) {
435
+ case lexer_1.TokenType.NUMBER:
436
+ case lexer_1.TokenType.STRING:
437
+ case lexer_1.TokenType.TRUE:
438
+ case lexer_1.TokenType.FALSE:
439
+ this.advance();
440
+ return {
441
+ type: 'Literal',
442
+ value: token.type === lexer_1.TokenType.TRUE
443
+ ? true
444
+ : token.type === lexer_1.TokenType.FALSE
445
+ ? false
446
+ : token.value,
447
+ };
448
+ case lexer_1.TokenType.IDENTIFIER:
449
+ const name = token.value;
450
+ this.advance();
451
+ return { type: 'Identifier', name };
452
+ case lexer_1.TokenType.LPAREN:
453
+ this.advance();
454
+ const expr = this.parseExpression();
455
+ this.expect(lexer_1.TokenType.RPAREN);
456
+ return expr;
457
+ case lexer_1.TokenType.LBRACKET:
458
+ return this.parseArrayLiteral();
459
+ case lexer_1.TokenType.LBRACE:
460
+ return this.parseObjectLiteral();
461
+ default:
462
+ throw new Error(`Token inesperado: ${token.type} na linha ${token.line}, coluna ${token.column}`);
463
+ }
464
+ }
465
+ parseArrayLiteral() {
466
+ this.expect(lexer_1.TokenType.LBRACKET);
467
+ const elements = [];
468
+ if (this.currentToken().type !== lexer_1.TokenType.RBRACKET) {
469
+ elements.push(this.parseExpression());
470
+ while (this.currentToken().type === lexer_1.TokenType.COMMA) {
471
+ this.advance();
472
+ elements.push(this.parseExpression());
473
+ }
474
+ }
475
+ this.expect(lexer_1.TokenType.RBRACKET);
476
+ return {
477
+ type: 'ArrayLiteral',
478
+ elements,
479
+ };
480
+ }
481
+ parseImportStatement() {
482
+ this.expect(lexer_1.TokenType.IMPORT);
483
+ const specifiers = [];
484
+ // Parse import specifiers
485
+ if (this.currentToken().type === lexer_1.TokenType.IDENTIFIER) {
486
+ const imported = this.currentToken().value;
487
+ this.advance();
488
+ let local = imported;
489
+ if (this.currentToken().type === lexer_1.TokenType.AS) {
490
+ this.advance();
491
+ local = this.expect(lexer_1.TokenType.IDENTIFIER).value;
492
+ }
493
+ specifiers.push({ imported, local });
494
+ while (this.currentToken().type === lexer_1.TokenType.COMMA) {
495
+ this.advance();
496
+ const imported2 = this.expect(lexer_1.TokenType.IDENTIFIER).value;
497
+ let local2 = imported2;
498
+ if (this.currentToken().type === lexer_1.TokenType.AS) {
499
+ this.advance();
500
+ local2 = this.expect(lexer_1.TokenType.IDENTIFIER).value;
501
+ }
502
+ specifiers.push({ imported: imported2, local: local2 });
503
+ }
504
+ }
505
+ this.expect(lexer_1.TokenType.FROM);
506
+ const source = this.expect(lexer_1.TokenType.STRING).value;
507
+ this.skipNewlines();
508
+ return {
509
+ type: 'ImportStatement',
510
+ specifiers,
511
+ source,
512
+ };
513
+ }
514
+ parseExportStatement() {
515
+ this.expect(lexer_1.TokenType.EXPORT);
516
+ const declaration = this.parseStatement();
517
+ if (!declaration || (declaration.type !== 'FunctionDeclaration' && declaration.type !== 'VariableDeclaration')) {
518
+ throw new Error('exporte só pode ser usado com funções ou variáveis');
519
+ }
520
+ return {
521
+ type: 'ExportStatement',
522
+ declaration,
523
+ };
524
+ }
525
+ parseBreakStatement() {
526
+ this.expect(lexer_1.TokenType.BREAK);
527
+ this.skipNewlines();
528
+ return {
529
+ type: 'BreakStatement',
530
+ };
531
+ }
532
+ parseContinueStatement() {
533
+ this.expect(lexer_1.TokenType.CONTINUE);
534
+ this.skipNewlines();
535
+ return {
536
+ type: 'ContinueStatement',
537
+ };
538
+ }
539
+ parseTryStatement() {
540
+ this.expect(lexer_1.TokenType.TRY);
541
+ const block = this.parseBlockStatement();
542
+ let handler = undefined;
543
+ if (this.currentToken().type === lexer_1.TokenType.CATCH) {
544
+ this.advance();
545
+ this.expect(lexer_1.TokenType.LPAREN);
546
+ let param = undefined;
547
+ if (this.currentToken().type === lexer_1.TokenType.IDENTIFIER) {
548
+ param = this.currentToken().value;
549
+ this.advance();
550
+ }
551
+ this.expect(lexer_1.TokenType.RPAREN);
552
+ const body = this.parseBlockStatement();
553
+ handler = { param, body };
554
+ }
555
+ let finalizer = undefined;
556
+ if (this.currentToken().type === lexer_1.TokenType.FINALLY) {
557
+ this.advance();
558
+ finalizer = this.parseBlockStatement();
559
+ }
560
+ return {
561
+ type: 'TryStatement',
562
+ block,
563
+ handler,
564
+ finalizer,
565
+ };
566
+ }
567
+ parseThrowStatement() {
568
+ this.expect(lexer_1.TokenType.THROW);
569
+ const argument = this.parseExpression();
570
+ this.skipNewlines();
571
+ return {
572
+ type: 'ThrowStatement',
573
+ argument,
574
+ };
575
+ }
576
+ parseObjectLiteral() {
577
+ this.expect(lexer_1.TokenType.LBRACE);
578
+ const properties = [];
579
+ this.skipNewlines();
580
+ while (this.currentToken().type !== lexer_1.TokenType.RBRACE) {
581
+ const key = this.expect(lexer_1.TokenType.IDENTIFIER).value;
582
+ this.expect(lexer_1.TokenType.ASSIGN);
583
+ const value = this.parseExpression();
584
+ properties.push({ key, value, computed: false });
585
+ this.skipNewlines();
586
+ if (this.currentToken().type === lexer_1.TokenType.COMMA) {
587
+ this.advance();
588
+ this.skipNewlines();
589
+ }
590
+ }
591
+ this.expect(lexer_1.TokenType.RBRACE);
592
+ return {
593
+ type: 'ObjectLiteral',
594
+ properties,
595
+ };
596
+ }
597
+ }
598
+ exports.Parser = Parser;
599
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}