Lx0: Prototyp -- Verzeichnisstruktur
Der Lx0-Prototyp dient dazu den grundsätzlichen Aufbau der Sprache und des Compilers meiner Lx-Programmiersprache für den eigenen Gebrauch auszuprobieren.
Er ist darauf ausgelegt möglichst schnell programmiert zu werden, um möglichst viel in kurzer Zeit auszuprobieren. Wenn er wie gedacht funktioniert wird er verworfen und mit der beim Prototyp gesammelten Erfahrung der eigentliche Compiler programmiert.
Weil er möglichst schnell programmiert wird, ist der Quelltext nicht sonderlich gut -- Unittests werden ganz fehlen, die Fehlerbehandlung ist nur minimal und die Struktur wird auch viele Wünsche offen lassen, diese Feature sind dann dem eigentlichen Compiler überlassen.
Problem ist dabei das geeignete Mittelmaß zwischen schneller Programmierung und noch genug viel an Fehlerbehandlung und Struktur zu finden, um sich dann nicht doch noch Stolpersteine in den Weg zu legen, wodurch die zu Anfang gewonnene Zeit wieder verlorengeht, weil man zu lange nach einen Fehler sucht oder sich ein neues Feature auf Grund der schlechten Struktur nur schwer oder gar nicht einbauen lässt.
Die ersten Quelltextzeilen legen anhand eines Hello World's die
Verzeichnisstruktur fest -- sie liegen im Moment nur in
Subversion (die svn. Subdomain ist neu. Kann sein,
dass sie noch nicht von überall erreichbar ist). Wenn ANT,
ANTLR 3, Java 5 und gcc vorhanden sind und man die
ANTLR .jars ins /lib-Verzeichnis von lx0prototype kopiert,
kann das Hello World-Programm mit ant crun nach C
konvertiert, mit gcc compiliert und anschließend als Binary ausgeführt werden.
>> ant crun
jar:
Building jar: Lx0Prototype/dist/lx0prototype.jar
compile-lx0:
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Hello World!\n");
return 0;
}
cmake:
gcc -o ../cbin/helloworld helloworld.c
crun:
Hello World!
ERSTELLEN ERFOLGREICH (Gesamtzeit: 0 Minuten 7 Sekunden)
Verzeichnisstruktur
src -- Java Quelltexte grammar -- ANTLR 3 Grammatik templates -- StringTemplates (ANTLR 3) examples -- .lx0 Beispiele ctools -- Makefile lib -- Benötigte .jars dist -- Zielverzeichnis für das fertige Programm build -- Buildverzeichnis (.class, .c, .o, ...) build.xml -- Ant Buildfile build.properties -- Ant Properties
