Skip to content

v0.5.0-alpha

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 02 Nov 13:55

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 Windows ddp-setup.exe)
  • ddp-setup wird dich durch die Installation führen (wenn du nicht immer 'ja' antworten willst, führe stattdessen ddp-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

Nützliche Links