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.
- package/.vscode/launch.json +19 -0
- package/README.md +96 -0
- package/book_ALT/LennySmartIcon1.png +0 -0
- package/book_ALT/chapter01.md +141 -0
- package/book_ALT/chapter02.md +48 -0
- package/book_ALT/chapter03.md +28 -0
- package/book_ALT/chapter04.md +19 -0
- package/book_ALT/chapter05.md +21 -0
- package/book_ALT/chapter06.md +167 -0
- package/book_ALT/chapter07.md +232 -0
- package/book_ALT/chapter08.md +200 -0
- package/book_ALT/chapter09.md +175 -0
- package/book_ALT/chapter10.md +196 -0
- package/book_ALT/deckblatt.md +60 -0
- package/book_ALT/images/Lenny01.png +0 -0
- package/book_ALT/images/Lenny02.png +0 -0
- package/book_ALT/images/Lenny03.png +0 -0
- package/book_ALT/images/Lenny04.png +0 -0
- package/book_ALT/images/Lenny05.png +0 -0
- package/book_ALT/images/Lenny06.png +0 -0
- package/book_ALT/images/Lenny07.png +0 -0
- package/book_ALT/images/Lenny08.png +0 -0
- package/book_ALT/images/Lenny09.png +0 -0
- package/book_ALT/images/Lenny10.png +0 -0
- package/book_ALT/images/Lenny11.png +0 -0
- package/book_ALT/images/Lenny12.png +0 -0
- package/book_ALT/images/Lenny13.png +0 -0
- package/book_ALT/images/Lenny14.png +0 -0
- package/book_ALT/images/Lenny15.png +0 -0
- package/book_ALT/lehrerheft.md +255 -0
- package/dist/ast/ast.d.ts +126 -0
- package/dist/ast/ast.d.ts.map +1 -0
- package/dist/ast/ast.js +3 -0
- package/dist/ast/ast.js.map +1 -0
- package/dist/browser.d.ts +2 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +1067 -0
- package/dist/browser.js.map +1 -0
- package/dist/examples.d.ts +11 -0
- package/dist/examples.d.ts.map +1 -0
- package/dist/examples.js +65 -0
- package/dist/examples.js.map +1 -0
- package/dist/i18n/i18n.d.ts +18 -0
- package/dist/i18n/i18n.d.ts.map +1 -0
- package/dist/i18n/i18n.js +505 -0
- package/dist/i18n/i18n.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/interpreter/interpreter.d.ts +40 -0
- package/dist/interpreter/interpreter.d.ts.map +1 -0
- package/dist/interpreter/interpreter.js +415 -0
- package/dist/interpreter/interpreter.js.map +1 -0
- package/dist/lexer/lexer.d.ts +87 -0
- package/dist/lexer/lexer.d.ts.map +1 -0
- package/dist/lexer/lexer.js +425 -0
- package/dist/lexer/lexer.js.map +1 -0
- package/dist/lny-config.yml +6 -0
- package/dist/parser/parser.d.ts +50 -0
- package/dist/parser/parser.d.ts.map +1 -0
- package/dist/parser/parser.js +605 -0
- package/dist/parser/parser.js.map +1 -0
- package/dist/repl.d.ts +3 -0
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +472 -0
- package/dist/repl.js.map +1 -0
- package/dist/run-file.d.ts +2 -0
- package/dist/run-file.d.ts.map +1 -0
- package/dist/run-file.js +140 -0
- package/dist/run-file.js.map +1 -0
- package/dist/test.d.ts +2 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +72 -0
- package/dist/test.js.map +1 -0
- package/dist/world/world.d.ts +103 -0
- package/dist/world/world.d.ts.map +1 -0
- package/dist/world/world.js +416 -0
- package/dist/world/world.js.map +1 -0
- package/docs/About.md +19 -0
- package/docs/INTERPRETER.md +240 -0
- package/docs/README.md +68 -0
- package/docs/i18n/README.md +20 -0
- package/docs/lny-referenz.md +161 -0
- package/docs/lny_ueberblick.md +33 -0
- package/examples/00-demo.lny +3 -0
- package/examples/01-variable-assignment.lny +4 -0
- package/examples/02-conditional.lny +7 -0
- package/examples/03-while-loop.lny +6 -0
- package/examples/04-for-loop.lny +5 -0
- package/examples/05-lenny-movement.lny +10 -0
- package/examples/06-procedure.lny +6 -0
- package/examples/fuer-range-1.lny +4 -0
- package/examples/fuer-range-2.lny +6 -0
- package/examples/fuer-range-3.lny +6 -0
- package/examples/fuer-range-4.lny +4 -0
- package/examples/fuer-range-5.lny +6 -0
- package/examples/solange-verschachtelt.lny +12 -0
- package/favicon.ico +0 -0
- package/index.html +108 -0
- package/jest.config.js +7 -0
- package/lny-config.yml +6 -0
- package/package.json +37 -0
- package/settings.json +4 -0
- package/src/ast/ast.ts +182 -0
- package/src/browser.ts +1274 -0
- package/src/examples.ts +68 -0
- package/src/i18n/i18n.ts +537 -0
- package/src/index.ts +6 -0
- package/src/interpreter/interpreter.ts +453 -0
- package/src/lexer/lexer.ts +493 -0
- package/src/parser/parser.ts +711 -0
- package/src/repl.ts +496 -0
- package/src/test.ts +71 -0
- package/src/world/world.ts +512 -0
- package/style.css +315 -0
- package/test1.lny +2 -0
- package/tests/interpreter.test.ts +42 -0
- package/tests/parser.test.ts +18 -0
- package/tsconfig.json +19 -0
- package/vercel.json +7 -0
- package/vscode-lny/.vscode/launch.json +13 -0
- package/vscode-lny/.vscodeignore +3 -0
- package/vscode-lny/README.md +83 -0
- package/vscode-lny/language-configuration.json +19 -0
- package/vscode-lny/license.txt +21 -0
- package/vscode-lny/lny-language-0.1.0.vsix +0 -0
- package/vscode-lny/package.json +41 -0
- package/vscode-lny/snippets/lny.json +136 -0
- 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
|
+

|
|
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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"}
|
package/dist/ast/ast.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/ast/ast.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":""}
|