Einzelnen Beitrag anzeigen

dmey

Registriert seit: 26. Aug 2009
Ort: Hamburg
11 Beiträge
 
#4

Re: Delphi-Parser und Prettyprinter

  Alt 26. Aug 2009, 16:20
Der Präprozessor ist bisher in erster Linie dazu gedacht den Parser einfacher testen zu können. Es ist daher nur die Berechnung relativ einfacher Ausdrücke möglich. Bei den himXML-Dateien scheiterte er an: "{$IF SizeOf( x ) ..." und an "Declared( himXML.TStream )". Ich hab jetzt eine verbesserte Version hochgeladen, die diese Ausdrücke zwar parsen, aber nicht korrekt auswerten kann.

- Der Parser kannte kein "strict private". Das ist jetzt eingebaut.

- Anscheinend werden Dateien in neueren Delphi-Versionen als UTF8 gespeichert. Der TextTransformer kann zwar auch UTF8 einlesen, das wird aber im generierten Code nicht automatisch unterstützt. Deshalb hab ich zunächst als Hack eingebaut, dass ""? am Anfang der Datei überlesen wird.

- Der Parser scheitert an erweiterten Records mit Sichtabkeitsattributen etc. Das ist ein neueres Delphi-Feature. Es kommt in vier Dateien vor:

himXML.pas
himXMLi.pas
himXML_Tools.pas
OmniXMLUtils.pas

Alle anderen Dateien werden nun geparst bzw. geprettyprinted.
Die Originaldateien sind m.E. durchaus gut lesbar. Der PrettyPrinter verbessert das Bild nicht. Er ist auch mehr als Demo oder für wirklich konfusen Code gedacht. Bei verschachtelten Anweisungen macht er die Struktur deutlich.

Für diejenigen, die es interessiert hab ich das Ergebnis als zip-Datei angefügt.

Leider bin ich auf ein anderes Problem gestoßen, dass durch einen fehlerhaften regulären Ausdruck bisher verdeckt war. Vielleicht kann mir da jemand weiterhelfen: Gibt es ein eindeutiges Kriterium dafür, wann ^a ein Zeichen und wann einen Zeiger darstellt?
Angehängte Dateien
Dateityp: zip pretty_himxml_117.zip (211,4 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat