Der Kompilierer

In diesem Artikel wird der Kompilierer der Deutschen Programmiersprache (kurz kddp) und seine Nutzung erklärt.

Übersicht

KDDP ist ein Konsolen Programm, das über eine Befehlszeile (wie Powershell, bash, etc.) benutzt wird. Die Nutzung des kddp Befehls sieht allgemein so aus:

$ kddp <Befehl> [Optionen] [Argumente]

wobei [Argumente] meistens eine Eingabedatei ist, die vom Befehl verarbeitet wird. Nicht alle Befehle brauchen eine Eingabedatei, und die möglichen Optionen sind immer optional.

Hilfe

Um alle möglichen Befehle und Optionen zu sehen, kann kddp selbst benutzt werden:

$ kddp
Der Kompilierer der deutschen Programmiersprache (DDP)

Nutzung:
  kddp <Befehl> [Optionen] [Argumente]

Verfügbare Befehle:
  kompiliere     Kompiliert eine .ddp Datei
  parse          Parst eine .ddp Datei in einen Abstrakten Syntaxbaum
  starte         Kompiliert und führt die angegebene .ddp Datei aus
  update         Aktualisiert kddp
  version        Zeigt Versionsinformationen des Kompilierers

Optionen:
  -h, --hilfe       Zeigt Informationen zum Befehl
  -v, --version     Zeigt die Version des Kompilierers
  -w, --wortreich   Gibt wortreiche Informationen aus

Probiere "kddp hilfe <Befehl>" oder "kddp <Befehl> [-h | --hilfe]" für mehr Informationen zu einem Befehl.

Beispiel hilfe für den kompiliere Befehl:

$ kddp hilfe kompiliere
Kompiliert eine .ddp Datei in eine ausführbare, llvm oder objekt Datei.

Nutzung:
  kddp kompiliere [-o Ausgabe-Datei [--main main.o] [--gcc-flags GCC-Flags] [--extern-gcc-flags Externe-GCC-Flags] [--nodeletes] [--verbose] [--link-modules] [--link-list-defs] [--gcc-executable Pfad-zu-GCC>] <Datei>

Optionen:
  -o, --ausgabe string                Optionaler Pfad der Ausgabedatei (.exe, .ll, .o, .obj, .s, .asm).
      --externe-gcc-optionen string   Benutzerdefinierte Optionen, die gcc für jede externe .c Datei übergeben werden
      --gcc-executable string         Pfad zur gcc executable, die genutzt werden soll (default "gcc")
      --gcc-optionen string           Benutzerdefinierte Optionen, die gcc übergeben werden
  -h, --hilfe                         Zeigt Informationen zum Befehl
      --list-defs-linken              Ob die eingebauten Listen Definitionen in das Hauptmodul gelinkt werden sollen (default true)
      --main string                   Optionaler Pfad zur main.o Datei
      --module-linken                 Ob alle Module in das Hauptmodul gelinkt werden sollen (default true)
      --nichts-loeschen               Keine temporären Dateien löschen
  -O, --optimierungs-stufe uint       Menge und Art der Optimierungen, die angewandt werden (default 1)

Globale Optionen:
  -w, --wortreich   Gibt wortreiche Informationen aus

Detaillierte Erklärung zu einigen Optionen

Hier ist eine Liste aller Befehle und Optionen mit einer kurzen Erklärung. Details folgen unten.

BefehlsnameBefehlssyntaxBefehlsbeschreibungBefehlsoptionenOptionsbeschreibungen
hilfehilfe <Befehl>Zeigt Nutzungsinformationen über den Befehl--
kompilierekompiliere <Eingabedatei> <Optionen>Kompiliert die gegebene .ddp Datei zu einer ausführbaren Datei-o <Ausgabepfad>
--wortreich
--nichts_loeschen
--gcc_optionen
--externe_gcc_optionen
Optionaler Pfad der Ausgabedatei
Gibt wortreiche Informationen während des Befehls
Temporäre Dateien werden nicht gelöscht
Benutzerdefinierte Optionen, die gcc übergeben werden
Benutzerdefinierte Optionen, die gcc für jede externe .c Datei übergeben werden
parseparse <Eingabedatei> <Optionen>Parse die Eingabedatei zu einem Abstrakten Syntaxbaum-o <Ausgabepfad>Optionaler Pfad der Ausgabedatei
versionversion <Optionen>Zeige Informationen zu dieser DDP Version--wortreich
--go_build_info
Zeige wortreiche Informationen
Zeige Go build Informationen
startestarte <Eingabedatei> <Optionen>Kompiliert und führt die gegebene .ddp Datei aus--wortreich
--gcc_optionen
--externe_gcc_optionen
Gibt wortreiche Informationen während des Befehls
Benutzerdefinierte Optionen, die gcc übergeben werden
Benutzerdefinierte Optionen, die gcc für jede externe .c Datei übergeben werden

kompiliere

$ kddp kompiliere <Eingabedatei> <Optionen> ist der wichtigste Befehl, und wird am meisten genutzt.

Die Eingabedatei muss eine .ddp Datei sein.

Mit der -o Option kann der Name der Ausgabedatei angegeben werden, typischerweise .exe auf Windows. Es können aber auch die Dateierweiterungen .ll, .o, .obj, .s und .asm. Wenn die Erweiterung .ll angegeben wird, wird llvm-ir ausgegeben. Das könnte interessant sein für Menschen die einfach daran interessiert sind, um Bugs zu finden oder Ähnliches. Bei den Erweiterungen .s oder .asm wird assembler-Sprache ausgegeben. Bei den Erweiterungen .o oder .obj werden Objektdateien ausgegeben, falls man andere Programme zu diesen linken möchte.

Mit den Optionen –gcc_optionen und –externe_gcc_optionen können weitere Argumente angegeben werden, die beim Linken an GCC übergeben werden.

Die Argumente aus –gcc_optionen werden beim finalen Link-Schritt übergeben und werden Benutzt wenn man z.B. zu externen Bibliotheken linken möchte (zu einer Grafikbibliothek o.ä.).

Die Argumente aus –externe_gcc_optionen werden nur benutzt falls es externe Funktionen gibt, die in .c Dateien definiert werden. Sollte das der Fall sein, wird jede angegebene .c Datei separat mit GCC kompiliert, und dabei werden die Argumente aus –externe_gcc_optionen übergeben. Das ist nützlich, wenn man Include-Verzeichnisse (wie die DDP-Runtime) oder C-Präprozessor Direktiven angeben muss/möchte.