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,196 @@
1
+ # 🛠️ Kapitel 10 – Warum funktioniert mein Programm nicht?
2
+
3
+ ## 💡 Willkommen beim Debugging
4
+
5
+ Auch die besten Programmierer haben Fehler im Code.
6
+
7
+ 👉 Das ist völlig normal!
8
+
9
+ Programmieren heißt nicht:
10
+ „Alles klappt sofort“
11
+
12
+ 👉 sondern:
13
+ „Fehler finden und lösen“
14
+
15
+ ---
16
+
17
+ ## 🧠 Was ist ein Fehler?
18
+
19
+ Ein Fehler bedeutet:
20
+
21
+ 👉 Das Programm macht nicht das, was du erwartest
22
+
23
+ Fehler heißen auch *Bugs*. Das ist das englische Wort für *Käfer*.
24
+
25
+ Aber was haben Käfer mit Fehlern in einem Programm zu tun?
26
+
27
+ Eine ganze Menge, jedenfalls früher, oder besser ganz früher.
28
+
29
+ Die ersten Computer waren riesige Schränke oder sogar ganze Räume voller Röhren, mechanischer Schalter, Kabeln und jede Mengen Geräte, die nicht nur Zahlen, sondern auch viel Wärme produzierten. In einer solchen Umgebung fühlen sich natürlich auch Käfer, Motten und andere Kleinstiere wohl. Eines dieser Tierchen muss damals zu einer Störung geführt haben, die man sich zunächst nicht erklären konnte. Später wurde irgendwo zwischen Kabeln, Röhren und Schaltern ein toter Käfer gefunden. Aha, der Bug war schuld. Seitdem kennt jede Programmierin diesen Begriff und die Fehlersuche heißt daher "de-bugging", also das Entfernen von Bugs.
30
+
31
+ ---
32
+
33
+ ## 🔍 Typische Fehlerarten
34
+
35
+ ### ❌ 1. Syntaxfehler
36
+
37
+ Der Code ist falsch geschrieben.
38
+
39
+ ```lny
40
+ WENN IST_FREI
41
+ LAUF
42
+ ENDE
43
+ ```
44
+
45
+ 👉 Hier fehlt `DANN`
46
+
47
+ ---
48
+
49
+ ### ❌ 2. Logikfehler
50
+
51
+ Der Code läuft, aber macht etwas Falsches.
52
+
53
+ ```lny
54
+ VAR x
55
+ SETZE x << 1
56
+
57
+ SOLANGE x < 5
58
+ SCHREIB x
59
+ ENDE
60
+ ```
61
+
62
+ 👉 Problem: x ändert sich nie → Endlosschleife
63
+
64
+ ---
65
+
66
+ ### ❌ 3. Laufzeitfehler
67
+
68
+ Etwas passiert zur falschen Zeit.
69
+
70
+ 👉 Beispiel:
71
+
72
+ - Lenny läuft gegen ein Hindernis
73
+ - Knochen wird genommen, obwohl keiner da ist
74
+
75
+ ---
76
+
77
+ ## 🐾 Strategie zum Debuggen
78
+
79
+ ### 1️⃣ Schritt für Schritt denken
80
+
81
+ 👉 Was passiert in jeder Zeile?
82
+
83
+ ---
84
+
85
+ ### 2️⃣ Kleine Tests
86
+
87
+ 👉 Nicht gleich das ganze Programm testen
88
+
89
+ ---
90
+
91
+ ### 3️⃣ Werte ausgeben
92
+
93
+ ```lny
94
+ SCHREIB x
95
+ ```
96
+
97
+ 👉 So siehst du, was passiert
98
+
99
+ ---
100
+
101
+ ### 4️⃣ Vereinfachen
102
+
103
+ 👉 Mach das Programm kleiner
104
+
105
+ ---
106
+
107
+ ## 🔍 Beispiel
108
+
109
+ ```lny
110
+ VAR x
111
+ SETZE x << 3
112
+
113
+ SOLANGE x > 0
114
+ SCHREIB x
115
+ ENDE
116
+ ```
117
+
118
+ 👉 Fehler: x wird nie kleiner
119
+
120
+ ---
121
+
122
+ ## ✔️ Lösung
123
+
124
+ ```lny
125
+ VAR x
126
+ SETZE x << 3
127
+
128
+ SOLANGE x > 0
129
+ SCHREIB x
130
+ SETZE x << x - 1
131
+ ENDE
132
+ ```
133
+
134
+ ---
135
+
136
+ ## 🧠 Denkweise
137
+
138
+ Statt:
139
+ 👉 „Das geht nicht!“
140
+
141
+ Besser:
142
+ 👉 „Was passiert hier genau?“
143
+
144
+ ---
145
+
146
+ ## 🎯 Aufgabe 1
147
+
148
+ Finde den Fehler:
149
+
150
+ ```lny
151
+ WENN IST_KNOCHEN
152
+ NIMM
153
+ ENDE
154
+ ```
155
+
156
+ ---
157
+
158
+ ## 🎯 Aufgabe 2
159
+
160
+ Warum funktioniert das nicht?
161
+
162
+ ```lny
163
+ VAR x
164
+ SETZE x << 5
165
+
166
+ SOLANGE x > 0
167
+ SCHREIB x
168
+ ENDE
169
+ ```
170
+
171
+ ---
172
+
173
+ ## 🎯 Aufgabe 3 (Bonus)
174
+
175
+ Baue absichtlich einen Fehler
176
+ 👉 und finde ihn wieder
177
+
178
+ ---
179
+
180
+ ## 🚀 Profi-Tipps
181
+
182
+ - langsam lesen
183
+ - laut erklären
184
+ - mit anderen darüber sprechen
185
+
186
+ 👉 Oft erkennt man den Fehler sofort!
187
+
188
+ ---
189
+
190
+ ## 🏁 Abschluss
191
+
192
+ Fehler sind keine Niederlage.
193
+
194
+ 👉 Fehler sind der Weg zum Ziel.
195
+
196
+ 🐶 Auch Lenny hat viel gelernt – durch Fehler!
@@ -0,0 +1,60 @@
1
+ # 🐶 Programmieren lernen mit Lny
2
+
3
+ ![Lenny](LennySmartIcon1.png)
4
+
5
+ ---
6
+
7
+ ## 🧠 Ein spielerischer Einstieg in die Welt des Programmierens
8
+
9
+ Mit Lenny, dem cleveren Hund 🐶, lernst du Schritt für Schritt:
10
+
11
+ - wie Programme funktionieren
12
+ - wie man mit Variablen arbeitet
13
+ - wie Entscheidungen getroffen werden
14
+ - wie Wiederholungen genutzt werden
15
+ - wie Listen und Prozeduren helfen
16
+
17
+ ---
18
+
19
+ ## 🎯 Für wen ist dieses Buch?
20
+
21
+ Dieses Buch ist ideal für:
22
+
23
+ - Einsteiger ohne Vorkenntnisse
24
+ - Schüler und Schülerinnen
25
+ - Workshops und IT-Camps
26
+ - neugierige Entdecker 🧠✨
27
+
28
+ ---
29
+
30
+ ## 🚀 Was dich erwartet
31
+
32
+ Du lernst Programmieren durch:
33
+
34
+ - kleine verständliche Beispiele
35
+ - viele Übungen
36
+ - spannende Mini-Projekte
37
+ - praktische Aufgaben mit Lenny
38
+
39
+ ---
40
+
41
+ ## 🐾 Lenny sagt:
42
+
43
+ > „Programmieren ist wie Spielen – nur schlauer!“
44
+
45
+ ---
46
+
47
+ ## 👨‍🏫 Autor
48
+
49
+ Pemo
50
+
51
+ ---
52
+
53
+ ## 📅 Version
54
+
55
+ Lny 1.0
56
+ Stand: 2026
57
+
58
+ ---
59
+
60
+ Viel Spaß beim Programmieren! 🎉
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,255 @@
1
+ # 📘 Lehrerheft – Programmieren lernen mit Lny
2
+
3
+ ## 🎯 Ziel des Lehrhefts
4
+
5
+ Dieses Lehrerheft unterstützt dich bei der Durchführung des Kurses.
6
+
7
+ Es enthält:
8
+
9
+ - Lösungen zu den Aufgaben
10
+ - didaktische Hinweise
11
+ - typische Fehler
12
+ - Tipps für den Unterricht
13
+
14
+ ---
15
+
16
+ # 🧠 Didaktische Grundidee
17
+
18
+ 👉 Lernen durch Tun
19
+
20
+ - kurze Erklärung
21
+ - sofort ausprobieren
22
+ - kleine Aufgaben
23
+ - gemeinsames Besprechen
24
+
25
+ 👉 Wichtig:
26
+ Fehler sind erlaubt und erwünscht!
27
+
28
+ ---
29
+
30
+ # 🐶 Kapitel 1 – Was ist ein Programm?
31
+
32
+ ## ✔️ Lösung Aufgabe
33
+
34
+ Programm:
35
+
36
+ ```lny
37
+ LAUF
38
+ DREH_LINKS
39
+ LAUF
40
+ DREH_LINKS
41
+ LAUF
42
+ ```
43
+
44
+ 👉 Lenny läuft in einer Zick-Zack-Bewegung.
45
+
46
+ ## 💡 Hinweis
47
+
48
+ Viele Lernende denken:
49
+ 👉 „Der Computer versteht schon, was ich meine“
50
+
51
+ ➡️ Klar machen: Computer sind exakt!
52
+
53
+ ---
54
+
55
+ # 📦 Kapitel 2 – Variablen
56
+
57
+ ## ✔️ Lösung
58
+
59
+ ```lny
60
+ VAR x
61
+ SETZE x << 3
62
+ SETZE x << x * 2
63
+ SCHREIB x
64
+ ```
65
+
66
+ 👉 Ausgabe: 6
67
+
68
+ ## ⚠️ Typische Fehler
69
+
70
+ - Anführungszeichen vergessen
71
+ - Variable nicht vorher mit VAR definiert
72
+
73
+ ---
74
+
75
+ # ⚖️ Kapitel 3 – Entscheidungen
76
+
77
+ ## ✔️ Lösung
78
+
79
+ ```lny
80
+ VAR x
81
+ SETZE x << 2
82
+
83
+ WENN x == 2
84
+ DANN
85
+ SCHREIB "OK"
86
+ SONST
87
+ SCHREIB "Fehler"
88
+ ENDE
89
+ ```
90
+
91
+ 👉 Ausgabe: OK
92
+
93
+ ## 💡 Hinweis
94
+
95
+ 👉 Entscheidungen sind immer WAHR oder FALSCH
96
+
97
+ ---
98
+
99
+ # 🔁 Kapitel 4 – Wiederholungen
100
+
101
+ ## ✔️ Lösung
102
+
103
+ ```
104
+ VAR x
105
+ SETZE x << 1
106
+
107
+ SOLANGE x < 5
108
+ SCHREIB x
109
+ SETZE x << x + 1
110
+ ENDE
111
+ ```
112
+
113
+ 👉 Ausgabe: 1, 2, 3, 4
114
+
115
+ ## ⚠️ Typische Fehler
116
+
117
+ - Endlosschleifen
118
+ - Zähler wird nicht verändert
119
+
120
+ ---
121
+
122
+ # 🗂️ Kapitel 5 – Listen
123
+
124
+ ## ✔️ Lösung
125
+
126
+ ```
127
+ FUER x IN [2, 4, 6]
128
+ SCHREIB x * 2
129
+ ENDE
130
+ ```
131
+
132
+ 👉 Ausgabe: 4, 8, 12
133
+
134
+ ## 💡 Hinweis
135
+
136
+ 👉 FUER = „für jedes Element“
137
+
138
+ ---
139
+
140
+ # 🔧 Kapitel 6 – Prozeduren
141
+
142
+ ## ✔️ Lösung
143
+
144
+ ```
145
+ PROZEDUR sprung
146
+ SPRING
147
+ LAUF
148
+ ENDE
149
+
150
+ sprung
151
+ sprung
152
+ ```
153
+
154
+ 👉 Lenny springt zweimal und läuft weiter
155
+
156
+ ## 💡 Hinweis
157
+
158
+ 👉 Wiederverwendung betonen!
159
+
160
+ ---
161
+
162
+ # 🌍 Kapitel 7 – Welt von Lenny
163
+
164
+ ## ✔️ Aufgabe 1
165
+
166
+ ```
167
+ NIMM
168
+ LAUF
169
+ ```
170
+
171
+ 👉 Lenny nimmt den Knochen und läuft weiter
172
+
173
+ ## ✔️ Aufgabe 2
174
+
175
+ 👉 Lenny läuft bis zum Hindernis und dreht sich dann
176
+
177
+ ## 💡 Hinweis
178
+
179
+ 👉 Raumvorstellung ist wichtig – ggf. aufzeichnen lassen
180
+
181
+ ---
182
+
183
+ # 🎮 Kapitel 8 – Mini-Projekte
184
+
185
+ ## ✔️ Quadrat
186
+
187
+ 👉 4x LAUF + DREH_LINKS
188
+
189
+ ## ✔️ Knochen sammeln
190
+
191
+ 👉 Kombination aus SOLANGE + WENN
192
+
193
+ ## 💡 Hinweis
194
+
195
+ 👉 Hier entsteht Motivation!
196
+
197
+ ---
198
+
199
+ # 🧩 Kapitel 9 – Labyrinth
200
+
201
+ ## ✔️ Lösung
202
+
203
+ ```
204
+ SOLANGE NOT IST_KNOCHEN
205
+ WENN IST_FREI
206
+ DANN
207
+ LAUF
208
+ SONST
209
+ DREH_LINKS
210
+ ENDE
211
+ ENDE
212
+
213
+ NIMM
214
+ ```
215
+
216
+ ## 💡 Hinweis
217
+
218
+ 👉 Strategien diskutieren lassen!
219
+
220
+ ---
221
+
222
+ # 🧠 Allgemeine Tipps
223
+
224
+ ## 👩‍🏫 Unterricht
225
+
226
+ - viel ausprobieren lassen
227
+ - wenig frontal erklären
228
+ - Fragen stellen statt Antworten geben
229
+
230
+ ## 🧒 Lernende
231
+
232
+ - arbeiten oft intuitiv
233
+ - brauchen schnelle Erfolgserlebnisse
234
+
235
+ ## 🔁 Wiederholung
236
+
237
+ 👉 Wiederholung ist entscheidend!
238
+
239
+ ---
240
+
241
+ # 🚀 Erweiterungen
242
+
243
+ - eigene Welten bauen
244
+ - Wettbewerbe („Wer sammelt mehr Knochen?“)
245
+ - kleine Spiele entwickeln
246
+
247
+ ---
248
+
249
+ # 🐶 Abschluss
250
+
251
+ 👉 Programmieren ist Problemlösen
252
+
253
+ 👉 Lenny macht es sichtbar und verständlich
254
+
255
+ Viel Erfolg im Unterricht! 🎉
@@ -0,0 +1,126 @@
1
+ export interface RangeLiteral extends ASTNode {
2
+ type: 'RangeLiteral';
3
+ start: Expression;
4
+ end: Expression;
5
+ }
6
+ export interface ASTNode {
7
+ type: string;
8
+ line?: number;
9
+ column?: number;
10
+ }
11
+ export interface NumberLiteral extends ASTNode {
12
+ type: 'NumberLiteral';
13
+ value: number;
14
+ }
15
+ export interface StringLiteral extends ASTNode {
16
+ type: 'StringLiteral';
17
+ value: string;
18
+ }
19
+ export interface BooleanLiteral extends ASTNode {
20
+ type: 'BooleanLiteral';
21
+ value: boolean;
22
+ }
23
+ export interface NothingLiteral extends ASTNode {
24
+ type: 'NothingLiteral';
25
+ }
26
+ export interface ListLiteral extends ASTNode {
27
+ type: 'ListLiteral';
28
+ elements: Expression[];
29
+ }
30
+ export interface Identifier extends ASTNode {
31
+ type: 'Identifier';
32
+ name: string;
33
+ line?: number;
34
+ column?: number;
35
+ }
36
+ export interface VariableDeclaration extends ASTNode {
37
+ type: 'VariableDeclaration';
38
+ name: string;
39
+ initialValue?: Expression;
40
+ }
41
+ export type Expression = NumberLiteral | StringLiteral | BooleanLiteral | NothingLiteral | ListLiteral | RangeLiteral | Identifier | BinaryExpression | UnaryExpression | CallExpression | ParenthesizedExpression | PrivateAttribute | GlobalAttribute;
42
+ export interface BinaryExpression extends ASTNode {
43
+ type: 'BinaryExpression';
44
+ left: Expression;
45
+ operator: string;
46
+ right: Expression;
47
+ }
48
+ export interface UnaryExpression extends ASTNode {
49
+ type: 'UnaryExpression';
50
+ operator: string;
51
+ argument: Expression;
52
+ }
53
+ export interface CallExpression extends ASTNode {
54
+ type: 'CallExpression';
55
+ callee: Identifier;
56
+ arguments: Expression[];
57
+ }
58
+ export interface ParenthesizedExpression extends ASTNode {
59
+ type: 'ParenthesizedExpression';
60
+ expression: Expression;
61
+ }
62
+ export interface PrivateAttribute extends ASTNode {
63
+ type: 'PrivateAttribute';
64
+ name: string;
65
+ }
66
+ export interface GlobalAttribute extends ASTNode {
67
+ type: 'GlobalAttribute';
68
+ name: string;
69
+ }
70
+ export type Statement = ExpressionStatement | VariableDeclaration | VariableAssignment | IfStatement | WhileStatement | ForStatement | ProcedureDeclaration | ReturnStatement | Block | LogStatement | CommentStatement;
71
+ export interface ExpressionStatement extends ASTNode {
72
+ type: 'ExpressionStatement';
73
+ expression: Expression;
74
+ }
75
+ export interface VariableAssignment extends ASTNode {
76
+ type: 'VariableAssignment';
77
+ name: string;
78
+ operator: string;
79
+ value: Expression;
80
+ line?: number;
81
+ column?: number;
82
+ }
83
+ export interface IfStatement extends ASTNode {
84
+ type: 'IfStatement';
85
+ condition: Expression;
86
+ consequent: Statement[];
87
+ alternate?: Statement[];
88
+ }
89
+ export interface WhileStatement extends ASTNode {
90
+ type: 'WhileStatement';
91
+ condition: Expression;
92
+ body: Statement[];
93
+ }
94
+ export interface ForStatement extends ASTNode {
95
+ type: 'ForStatement';
96
+ variable: string;
97
+ iterable: Expression;
98
+ body: Statement[];
99
+ }
100
+ export interface ProcedureDeclaration extends ASTNode {
101
+ type: 'ProcedureDeclaration';
102
+ name: string;
103
+ parameters: string[];
104
+ body: Statement[];
105
+ }
106
+ export interface ReturnStatement extends ASTNode {
107
+ type: 'ReturnStatement';
108
+ argument?: Expression;
109
+ }
110
+ export interface Block extends ASTNode {
111
+ type: 'Block';
112
+ statements: Statement[];
113
+ }
114
+ export interface LogStatement extends ASTNode {
115
+ type: 'LogStatement';
116
+ expression: Expression;
117
+ }
118
+ export interface CommentStatement extends ASTNode {
119
+ type: 'CommentStatement';
120
+ text: string;
121
+ }
122
+ export interface Program extends ASTNode {
123
+ type: 'Program';
124
+ body: Statement[];
125
+ }
126
+ //# sourceMappingURL=ast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast/ast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/ast/ast.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":""}