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.
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,425 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Lexer = exports.TokenType = void 0;
4
+ const i18n_1 = require("../i18n/i18n");
5
+ var TokenType;
6
+ (function (TokenType) {
7
+ // Literals
8
+ TokenType["NUMBER"] = "NUMBER";
9
+ TokenType["STRING"] = "STRING";
10
+ TokenType["BOOLEAN"] = "BOOLEAN";
11
+ // Keywords - Control Flow
12
+ TokenType["IF"] = "IF";
13
+ TokenType["THEN"] = "THEN";
14
+ TokenType["ELSE"] = "ELSE";
15
+ TokenType["END"] = "END";
16
+ TokenType["WHILE"] = "WHILE";
17
+ TokenType["FOR"] = "FOR";
18
+ TokenType["IN"] = "IN";
19
+ // Keywords - Variables
20
+ TokenType["VAR"] = "VAR";
21
+ TokenType["SET"] = "SET";
22
+ TokenType["AUF"] = "AUF";
23
+ TokenType["LIST"] = "LIST";
24
+ // Keywords - Functions
25
+ TokenType["PROC"] = "PROC";
26
+ TokenType["RETURN"] = "RETURN";
27
+ // Keywords - I/O
28
+ TokenType["LOG"] = "LOG";
29
+ TokenType["REM"] = "REM";
30
+ // Keywords - Operators
31
+ TokenType["NOT"] = "NOT";
32
+ TokenType["AND"] = "AND";
33
+ TokenType["OR"] = "OR";
34
+ // Keywords - Constants
35
+ TokenType["TRUE"] = "TRUE";
36
+ TokenType["FALSE"] = "FALSE";
37
+ TokenType["NOTHING"] = "NOTHING";
38
+ // Keywords - Attributes
39
+ TokenType["PRIVATE"] = "PRIVATE";
40
+ TokenType["GLOBAL"] = "GLOBAL";
41
+ // Identifiers and Operators
42
+ TokenType["IDENTIFIER"] = "IDENTIFIER";
43
+ // Operators
44
+ TokenType["ASSIGN"] = "ASSIGN";
45
+ TokenType["PLUS_ASSIGN"] = "PLUS_ASSIGN";
46
+ TokenType["MINUS_ASSIGN"] = "MINUS_ASSIGN";
47
+ TokenType["MULT_ASSIGN"] = "MULT_ASSIGN";
48
+ TokenType["DIV_ASSIGN"] = "DIV_ASSIGN";
49
+ TokenType["PLUS"] = "PLUS";
50
+ TokenType["MINUS"] = "MINUS";
51
+ TokenType["MULTIPLY"] = "MULTIPLY";
52
+ TokenType["DIVIDE"] = "DIVIDE";
53
+ TokenType["MODULO"] = "MODULO";
54
+ TokenType["POWER"] = "POWER";
55
+ TokenType["EQUAL"] = "EQUAL";
56
+ TokenType["NOT_EQUAL"] = "NOT_EQUAL";
57
+ TokenType["LESS"] = "LESS";
58
+ TokenType["GREATER"] = "GREATER";
59
+ TokenType["LESS_EQUAL"] = "LESS_EQUAL";
60
+ TokenType["GREATER_EQUAL"] = "GREATER_EQUAL";
61
+ // Punctuation
62
+ TokenType["LPAREN"] = "LPAREN";
63
+ TokenType["RPAREN"] = "RPAREN";
64
+ TokenType["LBRACKET"] = "LBRACKET";
65
+ TokenType["RBRACKET"] = "RBRACKET";
66
+ TokenType["LBRACE"] = "LBRACE";
67
+ TokenType["RBRACE"] = "RBRACE";
68
+ TokenType["COMMA"] = "COMMA";
69
+ TokenType["DOT"] = "DOT";
70
+ // Special
71
+ TokenType["EOF"] = "EOF";
72
+ TokenType["NEWLINE"] = "NEWLINE";
73
+ })(TokenType || (exports.TokenType = TokenType = {}));
74
+ class Lexer {
75
+ constructor(source, language = 'de') {
76
+ this.position = 0;
77
+ this.line = 1;
78
+ this.column = 1;
79
+ this.source = source;
80
+ this.i18n = new i18n_1.I18n(language);
81
+ this.keywords = this.buildKeywordMap();
82
+ }
83
+ syntax(message) {
84
+ return new Error(`${this.i18n.t('error_syntax')}: ${message}`);
85
+ }
86
+ buildKeywordMap() {
87
+ const map = new Map();
88
+ // Add all keyword variants for all languages
89
+ const keywordMappings = [
90
+ ['kw_if', TokenType.IF],
91
+ ['kw_then', TokenType.THEN],
92
+ ['kw_else', TokenType.ELSE],
93
+ ['kw_end', TokenType.END],
94
+ ['kw_while', TokenType.WHILE],
95
+ ['kw_for', TokenType.FOR],
96
+ ['kw_for_alias1', TokenType.FOR], // Alias für 'fuer'
97
+ ['kw_in', TokenType.IN],
98
+ ['kw_var', TokenType.VAR],
99
+ ['kw_set', TokenType.SET],
100
+ ['kw_auf', TokenType.AUF],
101
+ ['kw_list', TokenType.LIST],
102
+ ['kw_log', TokenType.LOG],
103
+ ['kw_proc', TokenType.PROC],
104
+ ['kw_rem', TokenType.REM],
105
+ ['kw_rem_alias1', TokenType.REM],
106
+ ['kw_not', TokenType.NOT],
107
+ ['kw_and', TokenType.AND],
108
+ ['kw_or', TokenType.OR],
109
+ ['kw_true', TokenType.TRUE],
110
+ ['kw_false', TokenType.FALSE],
111
+ ['kw_nothing', TokenType.NOTHING],
112
+ ['kw_private', TokenType.PRIVATE],
113
+ ['kw_global', TokenType.GLOBAL],
114
+ ];
115
+ keywordMappings.forEach(([key, tokenType]) => {
116
+ const variants = this.i18n.getKeywordVariants(key);
117
+ variants.forEach((variant) => {
118
+ const loweredVariant = variant.toLowerCase();
119
+ map.set(loweredVariant, tokenType);
120
+ map.set(this.normalizeKeyword(loweredVariant), tokenType);
121
+ });
122
+ });
123
+ return map;
124
+ }
125
+ tokenize() {
126
+ const tokens = [];
127
+ while (this.position < this.source.length) {
128
+ const token = this.nextToken();
129
+ if (token.type !== TokenType.NEWLINE) {
130
+ tokens.push(token);
131
+ }
132
+ }
133
+ tokens.push({
134
+ type: TokenType.EOF,
135
+ value: '',
136
+ line: this.line,
137
+ column: this.column,
138
+ });
139
+ return tokens;
140
+ }
141
+ nextToken() {
142
+ this.skipWhitespace();
143
+ if (this.position >= this.source.length) {
144
+ return {
145
+ type: TokenType.EOF,
146
+ value: '',
147
+ line: this.line,
148
+ column: this.column,
149
+ };
150
+ }
151
+ const char = this.current();
152
+ const line = this.line;
153
+ const column = this.column;
154
+ // Comments
155
+ if (char === '/' && this.peek() === '/') {
156
+ this.advance();
157
+ this.advance();
158
+ while (this.position < this.source.length && this.current() !== '\n') {
159
+ this.advance();
160
+ }
161
+ return this.nextToken();
162
+ }
163
+ // Strings
164
+ if (char === '"' || char === "'") {
165
+ return this.readString(char);
166
+ }
167
+ // Numbers
168
+ if (this.isDigit(char)) {
169
+ return this.readNumber();
170
+ }
171
+ // Identifiers and Keywords
172
+ if (this.isLetter(char) || char === '_') {
173
+ return this.readIdentifierOrKeyword();
174
+ }
175
+ // Operators and Punctuation
176
+ switch (char) {
177
+ case '(':
178
+ this.advance();
179
+ return { type: TokenType.LPAREN, value: '(', line, column };
180
+ case ')':
181
+ this.advance();
182
+ return { type: TokenType.RPAREN, value: ')', line, column };
183
+ case '[':
184
+ this.advance();
185
+ return { type: TokenType.LBRACKET, value: '[', line, column };
186
+ case ']':
187
+ this.advance();
188
+ return { type: TokenType.RBRACKET, value: ']', line, column };
189
+ case '{':
190
+ this.advance();
191
+ return { type: TokenType.LBRACE, value: '{', line, column };
192
+ case '}':
193
+ this.advance();
194
+ return { type: TokenType.RBRACE, value: '}', line, column };
195
+ case ',':
196
+ this.advance();
197
+ return { type: TokenType.COMMA, value: ',', line, column };
198
+ case '.':
199
+ this.advance();
200
+ return { type: TokenType.DOT, value: '.', line, column };
201
+ case '<':
202
+ this.advance();
203
+ if (this.current() === '<') {
204
+ this.advance();
205
+ return { type: TokenType.ASSIGN, value: '<<', line, column };
206
+ }
207
+ else if (this.current() === '>') {
208
+ this.advance();
209
+ return { type: TokenType.NOT_EQUAL, value: '<>', line, column };
210
+ }
211
+ else if (this.current() === '=') {
212
+ this.advance();
213
+ return { type: TokenType.LESS_EQUAL, value: '<=', line, column };
214
+ }
215
+ return { type: TokenType.LESS, value: '<', line, column };
216
+ case '>':
217
+ this.advance();
218
+ if (this.current() === '=') {
219
+ this.advance();
220
+ return { type: TokenType.GREATER_EQUAL, value: '>=', line, column };
221
+ }
222
+ return { type: TokenType.GREATER, value: '>', line, column };
223
+ case '=':
224
+ this.advance();
225
+ if (this.current() === '=') {
226
+ this.advance();
227
+ return { type: TokenType.EQUAL, value: '==', line, column };
228
+ }
229
+ throw this.syntax(`Unexpected character: ${char} at line ${line}, column ${column}`);
230
+ case '+':
231
+ this.advance();
232
+ if (this.current() === '=') {
233
+ this.advance();
234
+ return { type: TokenType.PLUS_ASSIGN, value: '+=', line, column };
235
+ }
236
+ return { type: TokenType.PLUS, value: '+', line, column };
237
+ case '-':
238
+ this.advance();
239
+ if (this.current() === '=') {
240
+ this.advance();
241
+ return { type: TokenType.MINUS_ASSIGN, value: '-=', line, column };
242
+ }
243
+ return { type: TokenType.MINUS, value: '-', line, column };
244
+ case '*':
245
+ this.advance();
246
+ if (this.current() === '*') {
247
+ this.advance();
248
+ return { type: TokenType.POWER, value: '**', line, column };
249
+ }
250
+ else if (this.current() === '=') {
251
+ this.advance();
252
+ return { type: TokenType.MULT_ASSIGN, value: '*=', line, column };
253
+ }
254
+ return { type: TokenType.MULTIPLY, value: '*', line, column };
255
+ case '/':
256
+ this.advance();
257
+ if (this.current() === '=') {
258
+ this.advance();
259
+ return { type: TokenType.DIV_ASSIGN, value: '/=', line, column };
260
+ }
261
+ return { type: TokenType.DIVIDE, value: '/', line, column };
262
+ case '%':
263
+ this.advance();
264
+ return { type: TokenType.MODULO, value: '%', line, column };
265
+ case '\r':
266
+ this.advance();
267
+ if (this.current() === '\n') {
268
+ this.advance();
269
+ }
270
+ this.line++;
271
+ this.column = 1;
272
+ return { type: TokenType.NEWLINE, value: '\n', line, column };
273
+ case '\n':
274
+ this.advance();
275
+ this.line++;
276
+ this.column = 1;
277
+ return { type: TokenType.NEWLINE, value: '\n', line, column };
278
+ default:
279
+ throw this.syntax(`Unexpected character: '${char}' at line ${line}, column ${column}`);
280
+ }
281
+ }
282
+ readString(quote) {
283
+ const line = this.line;
284
+ const column = this.column;
285
+ let value = '';
286
+ this.advance(); // Skip opening quote
287
+ while (this.position < this.source.length && this.current() !== quote) {
288
+ if (this.current() === '\\') {
289
+ this.advance();
290
+ switch (this.current()) {
291
+ case 'n':
292
+ value += '\n';
293
+ break;
294
+ case 't':
295
+ value += '\t';
296
+ break;
297
+ case 'r':
298
+ value += '\r';
299
+ break;
300
+ case '\\':
301
+ value += '\\';
302
+ break;
303
+ case '"':
304
+ value += '"';
305
+ break;
306
+ case "'":
307
+ value += "'";
308
+ break;
309
+ default:
310
+ value += this.current();
311
+ }
312
+ this.advance();
313
+ }
314
+ else {
315
+ value += this.current();
316
+ this.advance();
317
+ }
318
+ }
319
+ if (this.position >= this.source.length) {
320
+ throw this.syntax(`Unterminated string at line ${line}, column ${column}`);
321
+ }
322
+ this.advance(); // Skip closing quote
323
+ return { type: TokenType.STRING, value, line, column };
324
+ }
325
+ readNumber() {
326
+ const line = this.line;
327
+ const column = this.column;
328
+ let value = '';
329
+ while (this.position < this.source.length && this.isDigit(this.current())) {
330
+ value += this.current();
331
+ this.advance();
332
+ }
333
+ if (this.current() === '.' && this.isDigit(this.peek())) {
334
+ value += '.';
335
+ this.advance();
336
+ while (this.position < this.source.length && this.isDigit(this.current())) {
337
+ value += this.current();
338
+ this.advance();
339
+ }
340
+ }
341
+ return { type: TokenType.NUMBER, value, line, column };
342
+ }
343
+ readIdentifierOrKeyword() {
344
+ const line = this.line;
345
+ // Spalte auf die erste nicht-leere Spalte setzen
346
+ let column = this.column;
347
+ let value = '';
348
+ // Korrigiere column, falls vorher Leerzeichen/Tabs waren
349
+ let lookbehind = this.position - 1;
350
+ while (lookbehind >= 0 && (this.source[lookbehind] === ' ' || this.source[lookbehind] === '\t')) {
351
+ column--;
352
+ lookbehind--;
353
+ }
354
+ while (this.position < this.source.length &&
355
+ (this.isLetter(this.current()) || this.isDigit(this.current()) || this.current() === '_')) {
356
+ value += this.current();
357
+ this.advance();
358
+ }
359
+ // Vereinheitliche auf Kleinbuchstaben und entferne Akzentzeichen für die Keyword-Suche
360
+ const normalizedValue = this.normalizeKeyword(value.toLowerCase());
361
+ const tokenType = this.keywords.get(normalizedValue) || TokenType.IDENTIFIER;
362
+ // Wenn es sich um ein Kommentarwort handelt, den Rest der Zeile als Kommentartext lesen
363
+ if (tokenType === TokenType.REM) {
364
+ let commentText = '';
365
+ // Überspringe evtl. führende Leerzeichen
366
+ while (this.position < this.source.length && (this.current() === ' ' || this.current() === '\t')) {
367
+ this.advance();
368
+ }
369
+ // Lese bis Zeilenende oder Dateiende
370
+ while (this.position < this.source.length && this.current() !== '\n' && this.current() !== '\r') {
371
+ commentText += this.current();
372
+ this.advance();
373
+ }
374
+ // Zeilennummer erhöhen, falls wir am Zeilenende sind
375
+ if (this.position < this.source.length && (this.current() === '\n' || this.current() === '\r')) {
376
+ this.advance();
377
+ this.line++;
378
+ this.column = 1;
379
+ // Nach dem Kommentar direkt ein NEWLINE-Token zurückgeben
380
+ return { type: TokenType.NEWLINE, value: '\n', line, column };
381
+ }
382
+ // Kein Zeilenumbruch, nur REM-Token zurückgeben
383
+ return { type: TokenType.REM, value: commentText.trim(), line, column };
384
+ }
385
+ return { type: tokenType, value, line, column };
386
+ }
387
+ skipWhitespace() {
388
+ while (this.position < this.source.length) {
389
+ const char = this.current();
390
+ if (char === ' ' || char === '\t') {
391
+ this.advance();
392
+ }
393
+ else {
394
+ break;
395
+ }
396
+ }
397
+ }
398
+ normalizeKeyword(value) {
399
+ return value.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
400
+ }
401
+ current() {
402
+ return this.source[this.position];
403
+ }
404
+ peek() {
405
+ return this.source[this.position + 1] || '';
406
+ }
407
+ advance() {
408
+ if (this.current() === '\n') {
409
+ this.line++;
410
+ this.column = 1;
411
+ }
412
+ else {
413
+ this.column++;
414
+ }
415
+ this.position++;
416
+ }
417
+ isDigit(char) {
418
+ return char >= '0' && char <= '9';
419
+ }
420
+ isLetter(char) {
421
+ return /[a-zA-Z_äöüßàâäèéêëìîïòôöùûüñçÑÜÖÄÈÉÊËÌÎÏÒÔÖÙÛÜ]/u.test(char);
422
+ }
423
+ }
424
+ exports.Lexer = Lexer;
425
+ //# sourceMappingURL=lexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexer.js","sourceRoot":"","sources":["../../src/lexer/lexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ # Lny startup configuration
2
+ # Supported languages: en, de, fr, es, it
3
+ # Field size formats: field_size: 10x10 or field_width/field_height
4
+ language: de
5
+ field_size: 10x10
6
+ start_bones: 3
@@ -0,0 +1,50 @@
1
+ import * as AST from '../ast/ast';
2
+ import { Language } from '../i18n/i18n';
3
+ export declare class Parser {
4
+ private tokens;
5
+ private current;
6
+ private i18n;
7
+ constructor(source: string, language?: Language);
8
+ private syntax;
9
+ private getErrorToken;
10
+ parse(): AST.Program;
11
+ private parseStatement;
12
+ private parseComment;
13
+ private parseVariableDeclaration;
14
+ private parseSetAssignment;
15
+ private parseAssignmentFromIdentifier;
16
+ private parseIfStatement;
17
+ private parseWhileStatement;
18
+ private parseForStatement;
19
+ private parseProcedureDeclaration;
20
+ private parseLogStatement;
21
+ private parseReturnStatement;
22
+ private parseExpression;
23
+ private parseListLiteral;
24
+ private parseOrExpression;
25
+ private parseAndExpression;
26
+ private parseEqualityExpression;
27
+ private parseRelationalExpression;
28
+ private parseAdditiveExpression;
29
+ private parseMultiplicativeExpression;
30
+ private parseExponentiationExpression;
31
+ private parseUnaryExpression;
32
+ private parsePostfixExpression;
33
+ private parsePrimaryExpression;
34
+ private expectIdentifier;
35
+ private isReservedWordToken;
36
+ private isAssignmentOperator;
37
+ private match;
38
+ private check;
39
+ private advance;
40
+ private isAtEnd;
41
+ private peek;
42
+ private previous;
43
+ /**
44
+ * Consumes the next token if it matches the expected type, otherwise throws a syntax error.
45
+ * @param type The expected token type
46
+ * @param message The error message if the token does not match
47
+ */
48
+ private expect;
49
+ }
50
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAQ,MAAM,cAAc,CAAC;AAE9C,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,IAAI,CAAO;gBAEP,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAe;IAMrD,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,aAAa;IAUrB,KAAK,IAAI,GAAG,CAAC,OAAO;IAcpB,OAAO,CAAC,cAAc;IAsEtB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,6BAA6B;IAmBrC,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,yBAAyB;IAmCjC,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,6BAA6B;IAiBrC,OAAO,CAAC,6BAA6B;IAiBrC,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,sBAAsB;IAkC9B,OAAO,CAAC,sBAAsB;IA+F9B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,KAAK;IAUb,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,QAAQ;IAIhB;;;;OAIG;IACH,OAAO,CAAC,MAAM;CAMf"}