DDP v0.5.0-alpha: Typ-Aliase/Definitionen, Operatoren Überladung, "Variablen"-Typ und Vorwärts Deklarationen
In diesem DDP Release ist eine ganze Menge neuer Features enthalten:
Typ-Aliase und Definitionen erlabuen es nun, schnell und einfach neue Typen zu erstellen um die Lesbarkeit zu verbessern:
[ Hausnummer ist nun ein anderer Name für Zahl ]
Wir nennen eine Zahl öffentlich auch eine Hausnummer.
Die Hausnummer h ist 22.
[ Ein Zeiger ist nun nicht bloß ein neuer Name sondern ein ganz neuer Typ ]
Wir definieren einen Zeiger als eine Zahl.
Der Zeiger z ist 0 als Zeiger.
Mit Operatoren Überladung kann man existierenden Operatoren beliebiges Verhalten zuweisen oder eigene Typen benutzbar machen:
[ Überlädt den "Länge" Operator für den Typ Zahl ]
Die Funktion zahl_länge mit dem Parameter z vom Typ Zahl, gibt eine Zahl zurück, macht:
Gib z zurück.
Und überlädt den "Länge" Operator.
[ "die Länge von 2" ruft nun die zahl_länge Funktion mit dem Argument 2 auf ]
Die Zahl z ist die Länge von 2.
Schreibe z. [Gibt 2 aus]
Wir definieren einen Zeiger als eine Zahl.
Die Funktion meine_Umwandlung mit dem Parameter z vom Typ Zeiger gibt einen Text zurück, macht:
Wenn z als Zahl gleich 0 ist, gib "null" zurück.
Gib z als Zahl als Text zurück.
Und überlädt den "als" Operator.
Der Zeiger null ist 0 als Zeiger.
Schreibe (null als Text). [Gibt "null" aus]
Der neue Typ "Variable" macht es möglich Werte von beliebigem Typ zu behandeln:
Die Variable v ist 2.
Schreibe (v als Zahl). [Gibt 2 aus]
Speichere "Hallo" in v.
Schreibe (v als Text). [Gibt "Hallo" aus]
Speichere wer weiß welchen Typ in v.
Wenn v ein Text ist, dann Schreibe "v ist ein Text!".
Sonst Schreibe "Keine Ahnung was v sein könnte".
Und zu guter Letzt gibt es nun auch Forwärts-Deklarationen, damit zwei Funktionen sich gegenseitig aufrufen können:
Die Funktion foo mit dem Parameter a vom Typ Zahl, gibt eine Zahl zurück,
wird später definiert
und kann so benutzt werden:
"foo <a>"
Die Funktion baz mit dem Parameter a vom Typ Zahl, gibt eine Zahl zurück, macht:
Wenn a gleich 0 ist, dann:
Schreibe "baz fertig" auf eine Zeile.
Gib 0 zurück.
Gib foo (a minus 1) zurück.
Und kann so benutzt werden:
"baz <a>"
foo 3.
baz 3.
Die Funktion foo macht:
Wenn a gleich 0 ist, dann:
Schreibe "foo fertig" auf eine Zeile.
Gib 0 zurück.
Gib baz (a minus 1) zurück.
Changelog
- [Added] Vorwärts Deklarationen
- [Added] _Ref Versionen für einige Duden/Listen und Duden/Texte Funktionen
- [Changed] Iterierenden Schleifen über Texte haben nun eine Zeitkomplexität von O(n) (anstatt O(n^2))
- [Fix] utf8 Texte
- [Fix] Aliase mit Referenz Parametern werden nun in mehr Fällen bevorzugt
- [Fix] Der Kompilierer crashet nicht mehr wenn indirekt importierte Symbole in eingebundenen Kombinations Aliasen verwendet werden
- [Changed] Duden/Zeichen und Duden/Texte um Konflikte mit dem neuen Variablen Typ zu vermeiden:
- Buchstabe_Ist_Zahl -> Buchstabe_Ist_Ziffer (Alias ebenfalls angepasst)
- Text_Ist_Zahl: Alias angepasst
- [Added] Duden/Dateisystem Datei_Lies_Alles
- [Added] "Variable" als Typ, der zur Laufzeit jeder beliebige andere Typ sein kann
- [Added] ... als Platzhalter
- [Fix] Bug im Parser, der rekursiv allen Arbeitsspeicher verbraucht
- [Added] Operatoren-Überladung
- [Changed] Die Typen, die von Funktionen, Variablen und anderen Typen benutzt werden müssen jetzt nicht mehr extra eingebunden werden
- [Added] Typ-Aliase und Typ-Definitionen
Update
Wenn du kddp schon installiert hast kannst du ganz einfach mit dem Befehl kddp update
auf diese Version updaten.
Mehr dazu hier.
Installation
- Das entsprechende Archiv herunterladen und entpacken (wenn auf Windows Mingw64 bereits installiert ist, die -no-mingw Version nehmen)
- Den entstandenen Ordner dorthin verschieben wo er final bleiben soll und eventuell umbenennen (DDP-v0.5.0... -> DDP)
- Das Programm
ddp-setup
im entstandenen Ordner ausführen (auf Windowsddp-setup.exe
) ddp-setup
wird dich durch die Installation führen (wenn du nicht immer 'ja' antworten willst, führe stattdessenddp-setup --force
aus)
Eine ausführlicherere Installations Anleitung gibt es hier.
Beispiel Linux:
wget https://github.com/DDP-Projekt/Kompilierer/releases/latest/download/DDP-v0.5.0-alpha-linux-amd64.tar.gz
tar -xzf ./DDP-v0.5.0-alpha-linux-amd64.tar.gz
mv ./DDP-v0.5.0-alpha-linux-amd64 ~/DDP
cd ~/DDP
./ddp-setup