Skip to content

Releases: DDP-Projekt/Kompilierer

v0.5.0-alpha

02 Nov 13:55
Compare
Choose a tag to compare

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

DDP v0.4.0-alpha: Alias Negationen

11 Jul 18:30
Compare
Choose a tag to compare

DDP v0.4.0-alpha: Alias Negationen

Dieser DDP Release bringt einige Features, die das DDP Programmieren angenehmer machen und Boilerplate Code entfernen. Namentlich den Falls ... ansonsten Operator (ternary Operator oder ? : in anderen Sprachen), einen entweder ... oder Operator um boolesches XOR umzusetzen, und am nützlichsten: Aliasnegationen.

Mit Aliasnegationen wird aus diesem Code:

Die öffentliche Funktion Ist_Text_Leer mit dem Parameter text vom Typ Text, gibt einen Wahrheitswert zurück, macht:
	Gib wahr, wenn die Länge von text gleich 0 ist zurück.
Und kann so benutzt werden:
	"<text> leer ist"

Die öffentliche Funktion Ist_Text_Nicht_Leer mit dem Parameter text vom Typ Text, gibt einen Wahrheitswert zurück, macht:
    Gib nicht text leer ist zurück.
Und kann so benutzt werden:
	"<text> nicht leer ist"

dieser:

Die öffentliche Funktion Ist_Text_Leer mit dem Parameter text vom Typ Text, gibt einen Wahrheitswert zurück, macht:
	Gib wahr, wenn die Länge von text gleich 0 ist zurück.
Und kann so benutzt werden:
	"<text> <!nicht> leer ist"

Changelog

  • [Added] Aliasnegationen

  • [Added] entweder ..., oder Operator

  • [Changed] "ist" nach Vergleichen ist jetzt Optional, falls davor bereits ein "ist" steht

  • [Added] Syntax um Variablen und Funktionen als "extern sichtbar" zu markieren, und somit name-mangling für diese auszuschalten

  • [Fix] Linker Fehler bei mehreren öffentlichen Symbolen mit demselben Namen

  • [Added] Falls Operator. Funktioniert so wie der Ternary Conditional Operator (?:) in anderen Sprachen.

  • [Added] in Duden/Dateisystem:

    • Datei Kombination
    • Datei_Oeffnen
    • Datei_Oeffnen_Lesen
    • Datei_Oeffnen_Schreiben
    • Datei_Oeffnen_Lesen_Schreiben
    • Datei_Oeffnen_Rückgabe
    • Datei_Oeffnen_Lesen_Rückgabe
    • Datei_Oeffnen_Schreiben_Rückgabe
    • Datei_Oeffnen_Lesen_Schreiben_Rückgabe
    • Datei_Schliessen
    • Datei_Zuende
    • Datei_Nicht_Zuende
    • Datei_Lies_N_Zeichen
    • Datei_Lies_Zeile
    • Datei_Lies_N_Zeilen
    • Datei_Lies_Wort
    • Datei_Lies_N_Worte
    • Datei_Lies_Zahl
    • Datei_Lies_N_Zahlen
    • Datei_Lies_Kommazahl
    • Datei_Lies_N_Kommazahlen
    • Datei_Schreibe_Zahl
    • Datei_Schreibe_Text
    • Datei_Schreibe_Kommazahl
    • Datei_Schreibe_Buchstabe
    • Datei_Schreibe_Wahrheitswert
    • Datei_Schreibe_Zeile_Zahl
    • Datei_Schreibe_Zeile_Text
    • Datei_Schreibe_Zeile_Kommazahl
    • Datei_Schreibe_Zeile_Buchstabe
    • Datei_Schreibe_Zeile_Wahrheitswert
  • [Added] Runden in Mathe/Duden hinzugefügt

  • [Fix] Funktionsparameter können nun nicht mehr Funktions- oder Kombinationsdeklarationen überschreiben

v0.3.0-alpha

04 May 15:02
Compare
Choose a tag to compare

DDP v0.3.0-alpha: Standardbibliothek

In diesem Release sind hauptsächlich einige Bug-fixes und einige neue Duden Funktionen, unter anderem in:

  • Duden/Pfade
  • Duden/Texte
  • Duden/Listen
  • Duden/Kryptographie
  • Duden/Regex

Changelog

  • [Breaking] Folgende Duden Funktionen wurden umbennant:
    • Pfade:
      • Ist_Absolut -> UNIX_Ist_Absolut
      • Säubern -> UNIX_Säubern
      • Verbinden -> UNIX_Verbinden
      • Ordner_Pfad -> UNIX_Ordnerpfad
      • Basis_Pfad -> UNIX_Basisname
      • Erweiterung -> UNIX_Erweiterung
      • Datei_Name -> UNIX_Dateiname
    • Mathe:
      • sin -> Sinus
      • cos -> Kosinus
      • tan -> tangens
      • asin -> Arkussinus
      • acos -> Arkuskosinus
      • atan -> Arkustangens
      • sinh -> Hyperbelsinus
      • cosh -> Hyperbelkosinus
      • tanh -> Hyperbeltangens
  • [Added] Folgende Duden Funktionen wurden hinzugefügt (siehe die Bedienungsanleitung für eine Beschreibung):
    • Pfade:
      • UNIX_Vollständiger_Pfad
      • Windows_Ist_Absolut
      • Windows_Saeubern
      • Windows_Pfad_Verbinden
      • Windows_Laufwerkbuchstabe
      • Windows_Vollständiger_Pfad
      • Windows_Ordnerpfad
      • Windows_Basisname
      • Windows_Dateiname
      • Windows_Erweiterung
      • Wrapper Funktionen für Windows/Linux Funktionen
    • Laufzeit:
      • Arbeitsverzeichnis
    • Zeichen:
      • Leerzeichen
      • Neue_Zeile
      • Wagenrücklauf
      • Tabulator
      • Rückstrich
      • Anführungszeichen
      • Apostroph
      • ASCII_Größer
      • ASCII_Kleiner,
      • Ist_Lateinischer_Buchstabe
      • Ist_Lateinischer_Buchstabe_Oder_Zahl
    • Regex:
      • Ist_Regex
      • Regex_Erster_Treffer
      • Regex_N_Treffer
      • Regex_Alle_Treffer
      • Regex_Erster_Treffer_Ersetzen
      • Regex_Alle_Treffer_Ersetzen
      • Regex_Spalten
    • Kryptographie:
      • SHA_256
      • SHA_512
    • Listen:
      • Aufsteigende_Zahlen
      • Absteigende_Zahlen, Linspace
      • Logspace, Erste_N_Elemente_X
      • Letzten_N_Elemente_X
      • Spiegeln_X
      • Summe_Zahlen_Liste
      • Produkt_Zahlen_Liste
      • Summe_Kommazahlen_Liste
      • Produkt_Kommazahlen_Liste
      • Verketten_Text_Liste
      • Elementweise_Summe_Zahl/Kommazahl
      • Elementweise_Differenz_Zahl/Kommazahl
      • Elementweise_Produkt_Zahl/Kommazahl
      • Elementweise_Quotient_Zahl/Kommazahl
      • Elementweise_Verketten_Text
    • Mathe:
      • Min3
      • Min3_Kommazahl
      • Max3
      • Max3_Kommazahl
      • Bogenmaß_Zu_Grad
      • Winkel, Kehrwert_Zahl
      • Kehrwert_Kommazahl
      • Natürlicher_Logarithmus
      • Gaußsche_Fehlerfunktion
      • Fakultät (Danke Franz Müller!)
    • Texte:
      • Hamming_Distanz
      • Levenshtein_Distanz
      • Vergleiche_Text
      • Text_Anzahl_Buchstabe
      • Text_Anzahl_Text
      • Text_Anzahl_Text_Nicht_Überlappend
      • Buchstaben_Text_BuchstabenListe
      • Buchstaben_Text_TextListe
      • Text_Index_Von_Text
      • Spalte_Text
      • Erster_Buchstabe
      • Nter_Buchstabe
      • Letzter_Buchstabe
      • Finde_Subtext
  • [Fix] Der zwischen Operator crasht nun nicht mehr bei Kommazahl/Zahl kombinationen
  • [Fix] Die Reihenfolge der 2 letzten Argumente beim zwischen Operator ist jetzt egal
  • [Added] Optionale Optimierungsstufe 2 optimiert das Kopieren von komplexeren Datentypen
  • [Added] Befehlszeilenargument "-O/--optimierungs-stufe" um die Optimierungsstufe zu setzen
  • [Changed] Befehlszeilenargumente benutzen nun "-" anstatt "" (z.B. --nichts-loeschen anstatt --nichts_loeschen). "" kann allerdings immernoch benutzt werden
  • [Added] der Standardwert Operator gibt den Standardwert eines Typen zurück
  • [Breaking] Der Größe Operator nimmt nun einen Typ als Operanden
  • [Fix] Bug beim Vergleichen von Kombinationen
  • [Fix] Externe Funktionsnamen in random.c
  • [Fix] Bei allen geklammerten Argumenten werden Fehler jetzt korrekt gemeldet

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.3.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.3.0-alpha-linux-amd64.tar.gz
tar -xzf ./DDP-v0.3.0-alpha-linux-amd64.tar.gz
mv ./DDP-v0.3.0-alpha-linux-amd64 ~/DDP
cd ~/DDP
./ddp-setup

Nützliche Links

LLVM Binaries

09 May 08:34
95b70f9
Compare
Choose a tag to compare

pre-compiled LLVM Binaries

Die UCRT Versionen sind kompatibel mit dem mingw Chocolatey package (choco install mingw --version 12.2.0) und der MinGW Version die auf dem windows-2022 github actions runner vorinstalliert ist.

Die MSVCRT Versionen wurden für alle Releases <= v0.3.0-alpha verwendet.

v0.2.0-alpha

21 Dec 13:25
Compare
Choose a tag to compare

DDP v0.2.0-alpha: Fehlerbehandlung

In diesem Release sind hauptsächlich einige Bug-fixes und das neue Modul Duden/Fehlerbehandlung enthalten, zu welchem es noch einen eigenen Artikel in der Bedienungsanleitung geben wird.

Changelog

  • [Fix] Bei geklammerten Referenz Argumenten werden Fehler jetzt korrekt gemeldet
  • [Breaking] Duden/Fehlerbehandlung wird nun überall im Duden benutzt
  • [Fix] Erstelle_Ordner gibt keinen Fehler mehr zurück, wenn einer der Ordner bereits existiert
  • [Added] Duden/Fehlerbehandlung
  • [Fix] crash bei Einbindungen von öffentlichen Kombinationen
  • [Added]: zwischen operator hinzugefügt
  • [Fix] typecheck crash bei Typumwandlungen zu invaliden Typen

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.2.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.2.0-alpha-linux-amd64.tar.gz
tar -xzf ./DDP-v0.2.0-alpha-linux-amd64.tar.gz
mv ./DDP-v0.2.0-alpha-linux-amd64 ~/DDP
cd ~/DDP
./ddp-setup

Nützliche Links

v0.1.0-alpha

02 Dec 11:08
Compare
Choose a tag to compare

DDP v0.1.0-alpha: Strukturen

Dies ist der zweite Release von DDP, mit vielen Bug-Fixes, kleineren Änderungen und dem großen Feature Strukturen.
Momentan ist kddp noch in der Alpha Version, es gibt also keinerlei Garantien für Funktionalität. Features sind recht minimal und Bugs in der Sprache so wie im Compiler sind zu erwarten.

Changelog

  • [Added]: Beliebige utf-8 Symbole sind jetzt in Aliasen erlaubt
  • [Breaking] Boolean zu Wahrheitswert umbennant
  • [Fix] kddp update ignoriert die -jetzt flag nicht mehr
  • [Fix] kddp update updated jetzt auch den Duden
  • [Added] Datei_Kopieren Funktion zu Duden/Dateisystem
  • [Fix] Bessere Fehlermeldungen #28
  • [Added] Datei-info Funktionen zu Duden/Dateisystem
  • [Fix] Double-Free Fehler in externen Funktionen
  • [Breaking] von...bis wurde zu im Bereich von...bis umbenannt
  • [Added] Syntax wie in Deklarationen für boolesche Rückgabewerte
  • [Added] bis...zum und ab...dem
  • [Fix] Alias Deklarationen
  • [Breaking] Namenskonvention im Duden
  • [Changed] Verbesserungen am Visitor interface (für den LS)
  • [Fix] Typos
  • [Breaking] Duden/Extremwerte nach Duden/Zahlen verschoben
  • [Added] Duden/Zahlen
  • [Added] Mehr Duden/Texte und Duden/Zeichen tests
  • [Fix] Duden/Texte edge-cases
  • [Fix] Verschiedene Crashes
  • [Added] Strukturen #5

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.1.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.1.0-alpha-linux-amd64.tar.gz
tar -xzf ./DDP-v0.1.0-alpha-linux-amd64.tar.gz
mv ./DDP-v0.1.0-alpha-linux-amd64 ~/DDP
cd ~/DDP
./ddp-setup

Nützliche Links

v0.0.1-alpha

15 Oct 09:50
Compare
Choose a tag to compare

DDP v0.0.1-alpha

Dies ist der erste Release von DDP.
Momentan ist kddp noch in der Alpha Version, es gibt also keinerlei Garantien für Funktionalität. Features sind recht minimal und Bugs in der Sprache so wie im Compiler sind zu erwarten.

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.0.1... -> 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.0.1-alpha-linux-amd64.tar.gz
tar -xzf ./DDP-v0.0.1-alpha-linux-amd64.tar.gz
mv ./DDP-v0.0.1-alpha-linux-amd64 ~/DDP
cd ~/DDP
./ddp-setup

Nützliche Links