SDL Reader (Compiler/Parser)
-
Ich habe meine eigenen sprache SDL (ich hoffe mal die abkürzung gibts noch nicht) und einen dazugehörigen compiler/parser geschrieben.
SDL (Structured Data Language)
ist KEINE Programmiersprache sondern eine Auszeichnungssprache wie zb XMLGemacht habe ich das projekt weil ich lust dazu hatte.
Der sprach syntax ist eigentlich ganz leicht
<Bezeichner>="<Value>"[opt
TestEntry="text"; TestEntry="text" TestEntry=14 TestEntry;
Elemente können innereinander verschachtelt werden
Block { subBlock { subSubBlock {} } }
kommentare sind wie bei c++
//linien kommentar /* block kommentar */
Ich habe auch ableitungen in meine sprache integriert
<Bezeichner> : <Bezeichner2>wobei zu beachten ist das in der gleichen ebene gesucht wird in der auch Bezeichner 1 ist, wird dort Bezeichner2 nicht gefunden wird an oberster ebene danach gesucht
beispielMAIN { test { subTest{var=14} } blockA { test="132" test2=456 } blockB : blockA { } blockC : MAIN.test.subTest {} blockE : subTest { } }
blockB und blockC funktionieren beide
da blockA in der gleichen ebene ist wie blockBblockC funktioniert da von oben weg gesucht wird
blockE funktioniert nicht da subTest nicht in MAIN gefunden werden kann
so und ein par Präprozessoranweisungen gibt es auch noch
wobei ich glaube die sind selbsterklärend#define #ifdef #ifndef #endif #include
finden tut ihr das ganze hier http://bigbigmek.bi.ohost.de/projectU/test.zip
ps:
der Reader liest die datei MAIN.sdl ein von ihr aus können andere includiert werden.außerdem kann der reader mit einem parmter gestartet werden sdlReader_tester.exe <dateipfad>
somit kann auch eine andere datei als MAIN.sdl geladen werden.nachdem einlesen ezeugt der Präprozessor eine zwischendatei
temp.ppf
eine datei in der die daten ein bischen anders gespeichert sind
und zwei ausgabe dateien
output.txt
und
output.xmlwer fehler findet möge sie mir bitte posten.
-
Die Abkuerzung "SDL" ist sogar schon mehrfach belegt, sogar im Computerbereich: http://en.wikipedia.org/wiki/SDL (haettest du aber auch selbst nachgoogln koennen )
-
Hallo
(ich hoffe mal die abkürzung gibts noch nicht)
Simple DirectMedia Layer, seit 1998, is a cross-platform, free and open source software multimedia library written in C.
Wie auch immer, ich schau mir das gerne mal an, sobald ich wieder Zeit habe
@Blue-Tiger: Nein, 7 Sekunden!
MfG
-
da waren noch ein haufen fehler drinnen.
Lade heute nochmal eine neue Version rauf.ps:
mir ist aufgefallen das das freigeben des Reservierten speichers einiges mehr Zeit in anspruch nimmt als das Reserieren einlesen der Datei und parsen.schuld ist der code
while (mTokenValueList.size() > 0) { delete mTokenValueList.back(); mTokenValueList.pop_back(); };
mTokenValueList ist eine std::list<>
wäre es schneller wenn ich mir da selber was schreibe?