lny-interpreter 0.99.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.

Potentially problematic release.


This version of lny-interpreter might be problematic. Click here for more details.

Files changed (130) hide show
  1. package/.vscode/launch.json +19 -0
  2. package/README.md +96 -0
  3. package/book_ALT/LennySmartIcon1.png +0 -0
  4. package/book_ALT/chapter01.md +141 -0
  5. package/book_ALT/chapter02.md +48 -0
  6. package/book_ALT/chapter03.md +28 -0
  7. package/book_ALT/chapter04.md +19 -0
  8. package/book_ALT/chapter05.md +21 -0
  9. package/book_ALT/chapter06.md +167 -0
  10. package/book_ALT/chapter07.md +232 -0
  11. package/book_ALT/chapter08.md +200 -0
  12. package/book_ALT/chapter09.md +175 -0
  13. package/book_ALT/chapter10.md +196 -0
  14. package/book_ALT/deckblatt.md +60 -0
  15. package/book_ALT/images/Lenny01.png +0 -0
  16. package/book_ALT/images/Lenny02.png +0 -0
  17. package/book_ALT/images/Lenny03.png +0 -0
  18. package/book_ALT/images/Lenny04.png +0 -0
  19. package/book_ALT/images/Lenny05.png +0 -0
  20. package/book_ALT/images/Lenny06.png +0 -0
  21. package/book_ALT/images/Lenny07.png +0 -0
  22. package/book_ALT/images/Lenny08.png +0 -0
  23. package/book_ALT/images/Lenny09.png +0 -0
  24. package/book_ALT/images/Lenny10.png +0 -0
  25. package/book_ALT/images/Lenny11.png +0 -0
  26. package/book_ALT/images/Lenny12.png +0 -0
  27. package/book_ALT/images/Lenny13.png +0 -0
  28. package/book_ALT/images/Lenny14.png +0 -0
  29. package/book_ALT/images/Lenny15.png +0 -0
  30. package/book_ALT/lehrerheft.md +255 -0
  31. package/dist/ast/ast.d.ts +126 -0
  32. package/dist/ast/ast.d.ts.map +1 -0
  33. package/dist/ast/ast.js +3 -0
  34. package/dist/ast/ast.js.map +1 -0
  35. package/dist/browser.d.ts +2 -0
  36. package/dist/browser.d.ts.map +1 -0
  37. package/dist/browser.js +1067 -0
  38. package/dist/browser.js.map +1 -0
  39. package/dist/examples.d.ts +11 -0
  40. package/dist/examples.d.ts.map +1 -0
  41. package/dist/examples.js +65 -0
  42. package/dist/examples.js.map +1 -0
  43. package/dist/i18n/i18n.d.ts +18 -0
  44. package/dist/i18n/i18n.d.ts.map +1 -0
  45. package/dist/i18n/i18n.js +505 -0
  46. package/dist/i18n/i18n.js.map +1 -0
  47. package/dist/index.d.ts +7 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +31 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/interpreter/interpreter.d.ts +40 -0
  52. package/dist/interpreter/interpreter.d.ts.map +1 -0
  53. package/dist/interpreter/interpreter.js +415 -0
  54. package/dist/interpreter/interpreter.js.map +1 -0
  55. package/dist/lexer/lexer.d.ts +87 -0
  56. package/dist/lexer/lexer.d.ts.map +1 -0
  57. package/dist/lexer/lexer.js +425 -0
  58. package/dist/lexer/lexer.js.map +1 -0
  59. package/dist/lny-config.yml +6 -0
  60. package/dist/parser/parser.d.ts +50 -0
  61. package/dist/parser/parser.d.ts.map +1 -0
  62. package/dist/parser/parser.js +605 -0
  63. package/dist/parser/parser.js.map +1 -0
  64. package/dist/repl.d.ts +3 -0
  65. package/dist/repl.d.ts.map +1 -0
  66. package/dist/repl.js +472 -0
  67. package/dist/repl.js.map +1 -0
  68. package/dist/run-file.d.ts +2 -0
  69. package/dist/run-file.d.ts.map +1 -0
  70. package/dist/run-file.js +140 -0
  71. package/dist/run-file.js.map +1 -0
  72. package/dist/test.d.ts +2 -0
  73. package/dist/test.d.ts.map +1 -0
  74. package/dist/test.js +72 -0
  75. package/dist/test.js.map +1 -0
  76. package/dist/world/world.d.ts +103 -0
  77. package/dist/world/world.d.ts.map +1 -0
  78. package/dist/world/world.js +416 -0
  79. package/dist/world/world.js.map +1 -0
  80. package/docs/About.md +19 -0
  81. package/docs/INTERPRETER.md +240 -0
  82. package/docs/README.md +68 -0
  83. package/docs/i18n/README.md +20 -0
  84. package/docs/lny-referenz.md +161 -0
  85. package/docs/lny_ueberblick.md +33 -0
  86. package/examples/00-demo.lny +3 -0
  87. package/examples/01-variable-assignment.lny +4 -0
  88. package/examples/02-conditional.lny +7 -0
  89. package/examples/03-while-loop.lny +6 -0
  90. package/examples/04-for-loop.lny +5 -0
  91. package/examples/05-lenny-movement.lny +10 -0
  92. package/examples/06-procedure.lny +6 -0
  93. package/examples/fuer-range-1.lny +4 -0
  94. package/examples/fuer-range-2.lny +6 -0
  95. package/examples/fuer-range-3.lny +6 -0
  96. package/examples/fuer-range-4.lny +4 -0
  97. package/examples/fuer-range-5.lny +6 -0
  98. package/examples/solange-verschachtelt.lny +12 -0
  99. package/favicon.ico +0 -0
  100. package/index.html +108 -0
  101. package/jest.config.js +7 -0
  102. package/lny-config.yml +6 -0
  103. package/package.json +37 -0
  104. package/settings.json +4 -0
  105. package/src/ast/ast.ts +182 -0
  106. package/src/browser.ts +1274 -0
  107. package/src/examples.ts +68 -0
  108. package/src/i18n/i18n.ts +537 -0
  109. package/src/index.ts +6 -0
  110. package/src/interpreter/interpreter.ts +453 -0
  111. package/src/lexer/lexer.ts +493 -0
  112. package/src/parser/parser.ts +711 -0
  113. package/src/repl.ts +496 -0
  114. package/src/test.ts +71 -0
  115. package/src/world/world.ts +512 -0
  116. package/style.css +315 -0
  117. package/test1.lny +2 -0
  118. package/tests/interpreter.test.ts +42 -0
  119. package/tests/parser.test.ts +18 -0
  120. package/tsconfig.json +19 -0
  121. package/vercel.json +7 -0
  122. package/vscode-lny/.vscode/launch.json +13 -0
  123. package/vscode-lny/.vscodeignore +3 -0
  124. package/vscode-lny/README.md +83 -0
  125. package/vscode-lny/language-configuration.json +19 -0
  126. package/vscode-lny/license.txt +21 -0
  127. package/vscode-lny/lny-language-0.1.0.vsix +0 -0
  128. package/vscode-lny/package.json +41 -0
  129. package/vscode-lny/snippets/lny.json +136 -0
  130. package/vscode-lny/syntaxes/lny.tmLanguage.json +85 -0
@@ -0,0 +1,605 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Parser = void 0;
4
+ const lexer_1 = require("../lexer/lexer");
5
+ const i18n_1 = require("../i18n/i18n");
6
+ class Parser {
7
+ constructor(source, language = 'de') {
8
+ this.current = 0;
9
+ this.i18n = new i18n_1.I18n(language);
10
+ const lexer = new lexer_1.Lexer(source, language);
11
+ this.tokens = lexer.tokenize();
12
+ }
13
+ syntax(message) {
14
+ const token = this.getErrorToken();
15
+ if (token) {
16
+ return new Error(`${this.i18n.t('error_syntax')}: ${message} (line ${token.line}, column ${token.column})`);
17
+ }
18
+ return new Error(`${this.i18n.t('error_syntax')}: ${message}`);
19
+ }
20
+ getErrorToken() {
21
+ if (this.current >= 0 && this.current < this.tokens.length) {
22
+ return this.tokens[this.current];
23
+ }
24
+ if (this.current > 0 && this.current - 1 < this.tokens.length) {
25
+ return this.tokens[this.current - 1];
26
+ }
27
+ return undefined;
28
+ }
29
+ parse() {
30
+ const statements = [];
31
+ while (!this.isAtEnd()) {
32
+ const stmt = this.parseStatement();
33
+ if (stmt) {
34
+ statements.push(stmt);
35
+ }
36
+ }
37
+ return {
38
+ type: 'Program',
39
+ body: statements,
40
+ };
41
+ }
42
+ parseStatement() {
43
+ // Comments
44
+ if (this.match(lexer_1.TokenType.REM)) {
45
+ return this.parseComment();
46
+ }
47
+ // Variable declaration
48
+ if (this.match(lexer_1.TokenType.VAR)) {
49
+ return this.parseVariableDeclaration();
50
+ }
51
+ // Explicit variable assignment with SET keyword
52
+ if (this.match(lexer_1.TokenType.SET)) {
53
+ return this.parseSetAssignment();
54
+ }
55
+ // Variable assignment
56
+ if (this.check(lexer_1.TokenType.IDENTIFIER)) {
57
+ const checkpoint = this.current;
58
+ const identifier = this.advance();
59
+ if (this.isAssignmentOperator(this.peek().type)) {
60
+ return this.parseAssignmentFromIdentifier(identifier.value);
61
+ }
62
+ // If not assignment, reset and parse as expression statement
63
+ this.current = checkpoint;
64
+ }
65
+ // Control Flow
66
+ if (this.match(lexer_1.TokenType.IF)) {
67
+ return this.parseIfStatement();
68
+ }
69
+ if (this.match(lexer_1.TokenType.WHILE)) {
70
+ return this.parseWhileStatement();
71
+ }
72
+ if (this.match(lexer_1.TokenType.FOR)) {
73
+ return this.parseForStatement();
74
+ }
75
+ // Procedure declaration
76
+ if (this.match(lexer_1.TokenType.PROC)) {
77
+ return this.parseProcedureDeclaration();
78
+ }
79
+ // Log statement
80
+ if (this.match(lexer_1.TokenType.LOG)) {
81
+ return this.parseLogStatement();
82
+ }
83
+ // Return statement
84
+ if (this.match(lexer_1.TokenType.RETURN)) {
85
+ return this.parseReturnStatement();
86
+ }
87
+ // Expression statement
88
+ if (!this.isAtEnd()) {
89
+ return {
90
+ type: 'ExpressionStatement',
91
+ expression: this.parseExpression(),
92
+ };
93
+ }
94
+ return null;
95
+ }
96
+ parseComment() {
97
+ // Das aktuelle Token ist das Kommentar-Token (REM), also einfach übernehmen
98
+ const token = this.peek();
99
+ const text = token.value;
100
+ this.advance(); // Zum nächsten Token weitergehen
101
+ return {
102
+ type: 'CommentStatement',
103
+ text: text.trim(),
104
+ };
105
+ }
106
+ parseVariableDeclaration() {
107
+ const varToken = this.previous();
108
+ const name = this.expectIdentifier('Expected variable name after VAR');
109
+ let initialValue;
110
+ if (this.match(lexer_1.TokenType.ASSIGN)) {
111
+ initialValue = this.parseExpression();
112
+ }
113
+ return {
114
+ type: 'VariableDeclaration',
115
+ name,
116
+ initialValue,
117
+ line: varToken.line,
118
+ column: varToken.column
119
+ };
120
+ }
121
+ parseSetAssignment() {
122
+ const setToken = this.previous();
123
+ const name = this.expectIdentifier('Expected variable name after SETZE');
124
+ if (!this.match(lexer_1.TokenType.AUF)) {
125
+ throw this.syntax('Expected AUF after variable name in SETZE statement');
126
+ }
127
+ const value = this.parseExpression();
128
+ return {
129
+ type: 'VariableAssignment',
130
+ name,
131
+ operator: 'AUF',
132
+ value,
133
+ line: setToken.line,
134
+ column: setToken.column
135
+ };
136
+ }
137
+ parseAssignmentFromIdentifier(name) {
138
+ const nameToken = this.previous();
139
+ if (!this.isAssignmentOperator(this.peek().type)) {
140
+ throw this.syntax('Expected assignment operator (<<, +=, -=, *=, /=)');
141
+ }
142
+ const operator = this.advance().value;
143
+ const value = this.parseExpression();
144
+ return {
145
+ type: 'VariableAssignment',
146
+ name,
147
+ operator,
148
+ value,
149
+ line: nameToken.line,
150
+ column: nameToken.column
151
+ };
152
+ }
153
+ parseIfStatement() {
154
+ const condition = this.parseExpression();
155
+ if (!this.match(lexer_1.TokenType.THEN)) {
156
+ throw this.syntax('Expected THEN after IF condition');
157
+ }
158
+ const consequent = [];
159
+ while (!this.check(lexer_1.TokenType.ELSE) && !this.check(lexer_1.TokenType.END) && !this.isAtEnd()) {
160
+ const stmt = this.parseStatement();
161
+ if (stmt)
162
+ consequent.push(stmt);
163
+ }
164
+ let alternate;
165
+ if (this.match(lexer_1.TokenType.ELSE)) {
166
+ alternate = [];
167
+ while (!this.check(lexer_1.TokenType.END) && !this.isAtEnd()) {
168
+ const stmt = this.parseStatement();
169
+ if (stmt)
170
+ alternate.push(stmt);
171
+ }
172
+ }
173
+ // Allow EOF as implicit END (for REPL)
174
+ if (!this.match(lexer_1.TokenType.END)) {
175
+ if (!this.isAtEnd()) {
176
+ throw this.syntax('Expected END after IF statement');
177
+ }
178
+ }
179
+ return {
180
+ type: 'IfStatement',
181
+ condition,
182
+ consequent,
183
+ alternate,
184
+ };
185
+ }
186
+ parseWhileStatement() {
187
+ const condition = this.parseExpression();
188
+ const body = [];
189
+ while (!this.check(lexer_1.TokenType.END) && !this.isAtEnd()) {
190
+ const stmt = this.parseStatement();
191
+ if (stmt)
192
+ body.push(stmt);
193
+ }
194
+ // Allow EOF as implicit END (for REPL)
195
+ if (!this.match(lexer_1.TokenType.END)) {
196
+ if (!this.isAtEnd()) {
197
+ throw this.syntax('Expected END after WHILE body');
198
+ }
199
+ }
200
+ return {
201
+ type: 'WhileStatement',
202
+ condition,
203
+ body,
204
+ };
205
+ }
206
+ parseForStatement() {
207
+ const variable = this.expectIdentifier('Expected variable name after FOR');
208
+ if (!this.match(lexer_1.TokenType.IN)) {
209
+ throw this.syntax('Expected IN after FOR variable');
210
+ }
211
+ const iterable = this.parseExpression();
212
+ const body = [];
213
+ while (!this.check(lexer_1.TokenType.END) && !this.isAtEnd()) {
214
+ const stmt = this.parseStatement();
215
+ if (stmt)
216
+ body.push(stmt);
217
+ }
218
+ // Allow EOF as implicit END (for REPL)
219
+ if (!this.match(lexer_1.TokenType.END)) {
220
+ if (!this.isAtEnd()) {
221
+ throw this.syntax('Expected END after FOR body');
222
+ }
223
+ }
224
+ return {
225
+ type: 'ForStatement',
226
+ variable,
227
+ iterable,
228
+ body,
229
+ };
230
+ }
231
+ parseProcedureDeclaration() {
232
+ const name = this.expectIdentifier('Expected procedure name');
233
+ const parameters = [];
234
+ // Parse parameters if they exist
235
+ if (this.match(lexer_1.TokenType.LPAREN)) {
236
+ if (!this.check(lexer_1.TokenType.RPAREN)) {
237
+ do {
238
+ parameters.push(this.expectIdentifier('Expected parameter name'));
239
+ } while (this.match(lexer_1.TokenType.COMMA));
240
+ }
241
+ if (!this.match(lexer_1.TokenType.RPAREN)) {
242
+ throw this.syntax('Expected ) after parameters');
243
+ }
244
+ }
245
+ const body = [];
246
+ while (!this.check(lexer_1.TokenType.END) && !this.isAtEnd()) {
247
+ const stmt = this.parseStatement();
248
+ if (stmt)
249
+ body.push(stmt);
250
+ }
251
+ if (!this.match(lexer_1.TokenType.END)) {
252
+ throw this.syntax('Expected END after PROC body');
253
+ }
254
+ return {
255
+ type: 'ProcedureDeclaration',
256
+ name,
257
+ parameters,
258
+ body,
259
+ };
260
+ }
261
+ parseLogStatement() {
262
+ const expression = this.parseExpression();
263
+ return {
264
+ type: 'LogStatement',
265
+ expression,
266
+ };
267
+ }
268
+ parseReturnStatement() {
269
+ let argument;
270
+ if (!this.isAtEnd() && !this.check(lexer_1.TokenType.END) && !this.check(lexer_1.TokenType.ELSE)) {
271
+ argument = this.parseExpression();
272
+ }
273
+ return {
274
+ type: 'ReturnStatement',
275
+ argument,
276
+ };
277
+ }
278
+ parseExpression() {
279
+ return this.parseOrExpression();
280
+ }
281
+ // --- List and Range Parsing ---
282
+ parseListLiteral() {
283
+ this.expect(lexer_1.TokenType.LBRACKET, 'Expected [');
284
+ // Check for range: [start..end]
285
+ const first = this.parseExpression();
286
+ if (this.match(lexer_1.TokenType.DOT) && this.match(lexer_1.TokenType.DOT)) {
287
+ // [start..end]
288
+ const end = this.parseExpression();
289
+ this.expect(lexer_1.TokenType.RBRACKET, 'Expected ] after range');
290
+ return {
291
+ type: 'RangeLiteral',
292
+ start: first,
293
+ end: end,
294
+ };
295
+ }
296
+ // Otherwise, normal list
297
+ const elements = [first];
298
+ while (this.match(lexer_1.TokenType.COMMA)) {
299
+ elements.push(this.parseExpression());
300
+ }
301
+ this.expect(lexer_1.TokenType.RBRACKET, 'Expected ] after list');
302
+ return {
303
+ type: 'ListLiteral',
304
+ elements,
305
+ };
306
+ }
307
+ parseOrExpression() {
308
+ let expr = this.parseAndExpression();
309
+ while (this.match(lexer_1.TokenType.OR)) {
310
+ const operator = this.previous().value;
311
+ const right = this.parseAndExpression();
312
+ expr = {
313
+ type: 'BinaryExpression',
314
+ left: expr,
315
+ operator,
316
+ right,
317
+ };
318
+ }
319
+ return expr;
320
+ }
321
+ parseAndExpression() {
322
+ let expr = this.parseEqualityExpression();
323
+ while (this.match(lexer_1.TokenType.AND)) {
324
+ const operator = this.previous().value;
325
+ const right = this.parseEqualityExpression();
326
+ expr = {
327
+ type: 'BinaryExpression',
328
+ left: expr,
329
+ operator,
330
+ right,
331
+ };
332
+ }
333
+ return expr;
334
+ }
335
+ parseEqualityExpression() {
336
+ let expr = this.parseRelationalExpression();
337
+ while (this.match(lexer_1.TokenType.EQUAL, lexer_1.TokenType.NOT_EQUAL)) {
338
+ const operator = this.previous().value;
339
+ const right = this.parseRelationalExpression();
340
+ expr = {
341
+ type: 'BinaryExpression',
342
+ left: expr,
343
+ operator,
344
+ right,
345
+ };
346
+ }
347
+ return expr;
348
+ }
349
+ parseRelationalExpression() {
350
+ let expr = this.parseAdditiveExpression();
351
+ while (this.match(lexer_1.TokenType.LESS, lexer_1.TokenType.GREATER, lexer_1.TokenType.LESS_EQUAL, lexer_1.TokenType.GREATER_EQUAL)) {
352
+ const operator = this.previous().value;
353
+ const right = this.parseAdditiveExpression();
354
+ expr = {
355
+ type: 'BinaryExpression',
356
+ left: expr,
357
+ operator,
358
+ right,
359
+ };
360
+ }
361
+ return expr;
362
+ }
363
+ parseAdditiveExpression() {
364
+ let expr = this.parseMultiplicativeExpression();
365
+ while (this.match(lexer_1.TokenType.PLUS, lexer_1.TokenType.MINUS)) {
366
+ const operator = this.previous().value;
367
+ const right = this.parseMultiplicativeExpression();
368
+ expr = {
369
+ type: 'BinaryExpression',
370
+ left: expr,
371
+ operator,
372
+ right,
373
+ };
374
+ }
375
+ return expr;
376
+ }
377
+ parseMultiplicativeExpression() {
378
+ let expr = this.parseExponentiationExpression();
379
+ while (this.match(lexer_1.TokenType.MULTIPLY, lexer_1.TokenType.DIVIDE, lexer_1.TokenType.MODULO)) {
380
+ const operator = this.previous().value;
381
+ const right = this.parseExponentiationExpression();
382
+ expr = {
383
+ type: 'BinaryExpression',
384
+ left: expr,
385
+ operator,
386
+ right,
387
+ };
388
+ }
389
+ return expr;
390
+ }
391
+ parseExponentiationExpression() {
392
+ let expr = this.parseUnaryExpression();
393
+ if (this.match(lexer_1.TokenType.POWER)) {
394
+ const operator = this.previous().value;
395
+ const right = this.parseExponentiationExpression(); // Right associative
396
+ expr = {
397
+ type: 'BinaryExpression',
398
+ left: expr,
399
+ operator,
400
+ right,
401
+ };
402
+ }
403
+ return expr;
404
+ }
405
+ parseUnaryExpression() {
406
+ if (this.match(lexer_1.TokenType.NOT, lexer_1.TokenType.MINUS)) {
407
+ const operator = this.previous().value;
408
+ const argument = this.parseUnaryExpression();
409
+ return {
410
+ type: 'UnaryExpression',
411
+ operator,
412
+ argument,
413
+ };
414
+ }
415
+ return this.parsePostfixExpression();
416
+ }
417
+ parsePostfixExpression() {
418
+ let expr = this.parsePrimaryExpression();
419
+ while (true) {
420
+ if (this.match(lexer_1.TokenType.LPAREN)) {
421
+ // Function call
422
+ if (expr.type !== 'Identifier') {
423
+ throw this.syntax('Only identifiers can be called');
424
+ }
425
+ const args = [];
426
+ if (!this.check(lexer_1.TokenType.RPAREN)) {
427
+ do {
428
+ args.push(this.parseExpression());
429
+ } while (this.match(lexer_1.TokenType.COMMA));
430
+ }
431
+ if (!this.match(lexer_1.TokenType.RPAREN)) {
432
+ throw this.syntax('Expected ) after function arguments');
433
+ }
434
+ expr = {
435
+ type: 'CallExpression',
436
+ callee: expr,
437
+ arguments: args,
438
+ };
439
+ }
440
+ else {
441
+ break;
442
+ }
443
+ }
444
+ return expr;
445
+ }
446
+ parsePrimaryExpression() {
447
+ // Numbers
448
+ if (this.check(lexer_1.TokenType.NUMBER)) {
449
+ const value = parseFloat(this.advance().value);
450
+ return {
451
+ type: 'NumberLiteral',
452
+ value,
453
+ };
454
+ }
455
+ // Strings
456
+ if (this.check(lexer_1.TokenType.STRING)) {
457
+ const value = this.advance().value;
458
+ return {
459
+ type: 'StringLiteral',
460
+ value,
461
+ };
462
+ }
463
+ // Booleans
464
+ if (this.match(lexer_1.TokenType.TRUE)) {
465
+ return {
466
+ type: 'BooleanLiteral',
467
+ value: true,
468
+ };
469
+ }
470
+ if (this.match(lexer_1.TokenType.FALSE)) {
471
+ return {
472
+ type: 'BooleanLiteral',
473
+ value: false,
474
+ };
475
+ }
476
+ // Nothing
477
+ if (this.match(lexer_1.TokenType.NOTHING)) {
478
+ return {
479
+ type: 'NothingLiteral',
480
+ };
481
+ }
482
+ // Lists (inkl. Bereichsoperator)
483
+ if (this.check(lexer_1.TokenType.LBRACKET)) {
484
+ return this.parseListLiteral();
485
+ }
486
+ // Parenthesized expressions
487
+ if (this.match(lexer_1.TokenType.LPAREN)) {
488
+ const expression = this.parseExpression();
489
+ if (!this.match(lexer_1.TokenType.RPAREN)) {
490
+ throw this.syntax('Expected ) after expression');
491
+ }
492
+ return {
493
+ type: 'ParenthesizedExpression',
494
+ expression,
495
+ };
496
+ }
497
+ // Private attribute access
498
+ if (this.match(lexer_1.TokenType.PRIVATE)) {
499
+ const name = this.expectIdentifier('Expected attribute name after PRIVATE');
500
+ return {
501
+ type: 'PrivateAttribute',
502
+ name,
503
+ };
504
+ }
505
+ // Global attribute access
506
+ if (this.match(lexer_1.TokenType.GLOBAL)) {
507
+ const name = this.expectIdentifier('Expected attribute name after GLOBAL');
508
+ return {
509
+ type: 'GlobalAttribute',
510
+ name,
511
+ };
512
+ }
513
+ // Identifiers
514
+ if (this.match(lexer_1.TokenType.IDENTIFIER)) {
515
+ const token = this.previous();
516
+ return {
517
+ type: 'Identifier',
518
+ name: token.value,
519
+ line: token.line,
520
+ column: token.column
521
+ };
522
+ }
523
+ throw this.syntax(`Unexpected token: ${this.peek().value}`);
524
+ }
525
+ // Helper methods
526
+ expectIdentifier(expectedMessage) {
527
+ const token = this.peek();
528
+ if (token.type === lexer_1.TokenType.IDENTIFIER) {
529
+ return this.advance().value;
530
+ }
531
+ if (this.isReservedWordToken(token.type)) {
532
+ throw this.syntax(this.i18n.t('error_reserved_word', { name: token.value }));
533
+ }
534
+ throw this.syntax(expectedMessage);
535
+ }
536
+ isReservedWordToken(type) {
537
+ // Prüfe reservierte Wörter nur für die aktuelle Sprache
538
+ // y ist z.B. nur in Spanisch reserviert, nicht in Deutsch/Englisch
539
+ const reserved = [
540
+ lexer_1.TokenType.IF, lexer_1.TokenType.THEN, lexer_1.TokenType.ELSE, lexer_1.TokenType.END, lexer_1.TokenType.WHILE, lexer_1.TokenType.FOR, lexer_1.TokenType.IN,
541
+ lexer_1.TokenType.VAR, lexer_1.TokenType.SET, lexer_1.TokenType.AUF, lexer_1.TokenType.LIST, lexer_1.TokenType.PROC, lexer_1.TokenType.RETURN, lexer_1.TokenType.LOG, lexer_1.TokenType.REM,
542
+ lexer_1.TokenType.NOT, lexer_1.TokenType.TRUE, lexer_1.TokenType.FALSE, lexer_1.TokenType.NOTHING, lexer_1.TokenType.PRIVATE, lexer_1.TokenType.GLOBAL
543
+ ];
544
+ // AND und OR nur reserviert, wenn sie in der aktuellen Sprache wirklich so heißen
545
+ if (this.i18n.t('kw_and').toLowerCase() === 'and' && type === lexer_1.TokenType.AND)
546
+ return true;
547
+ if (this.i18n.t('kw_or').toLowerCase() === 'or' && type === lexer_1.TokenType.OR)
548
+ return true;
549
+ // In anderen Sprachen (z.B. Spanisch: 'y' für AND) ist AND nur reserviert, wenn das aktuelle Keyword so heißt
550
+ if (type === lexer_1.TokenType.AND && this.i18n.t('kw_and').toLowerCase() !== 'and')
551
+ return false;
552
+ if (type === lexer_1.TokenType.OR && this.i18n.t('kw_or').toLowerCase() !== 'or')
553
+ return false;
554
+ return reserved.includes(type);
555
+ }
556
+ isAssignmentOperator(type) {
557
+ return (type === lexer_1.TokenType.ASSIGN ||
558
+ type === lexer_1.TokenType.PLUS_ASSIGN ||
559
+ type === lexer_1.TokenType.MINUS_ASSIGN ||
560
+ type === lexer_1.TokenType.MULT_ASSIGN ||
561
+ type === lexer_1.TokenType.DIV_ASSIGN);
562
+ }
563
+ match(...types) {
564
+ for (const type of types) {
565
+ if (this.check(type)) {
566
+ this.advance();
567
+ return true;
568
+ }
569
+ }
570
+ return false;
571
+ }
572
+ check(type) {
573
+ if (this.isAtEnd())
574
+ return false;
575
+ return this.peek().type === type;
576
+ }
577
+ advance() {
578
+ if (!this.isAtEnd()) {
579
+ this.current++;
580
+ }
581
+ return this.previous();
582
+ }
583
+ isAtEnd() {
584
+ return this.peek().type === lexer_1.TokenType.EOF;
585
+ }
586
+ peek() {
587
+ return this.tokens[this.current];
588
+ }
589
+ previous() {
590
+ return this.tokens[this.current - 1];
591
+ }
592
+ /**
593
+ * Consumes the next token if it matches the expected type, otherwise throws a syntax error.
594
+ * @param type The expected token type
595
+ * @param message The error message if the token does not match
596
+ */
597
+ expect(type, message) {
598
+ if (this.check(type)) {
599
+ return this.advance();
600
+ }
601
+ throw this.syntax(message);
602
+ }
603
+ }
604
+ exports.Parser = Parser;
605
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"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"}
package/dist/repl.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=repl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":""}