2010-12-22 4 views
6

Während ich schon viele rekursive Parser geschrieben habe, habe ich mich vor kurzem für den Castalia Delphi Parser interessiert (warum erfinde ich das Rad neu?). Ich weiß, dass dieser Parser im Laufe der Jahre in vielen Projekten verwendet wurde - aber es ist schwierig, eine Dokumentation dafür zu finden.Gibt es Beispiele oder Dokumentationen zur Verwendung des Castalia Source Parsers?

Wo genau finde ich die Dokumentation? Oder gibt es als Alternative Beispiele für die Verwendung in einem echten Parsing-Szenario?

Die Idee ist, Castalia für die Syntaxverifikation von Delphi-Einheiten zu verwenden und (wenn möglich) beim Erzeugen eines Knotenbaums eines Programms (mit Klassen, ihren Methoden, Parametern, Ergebnisdatentypen, if/then/else - - im Grunde eine vollständige Karte einer Einheit oder eines Programms). Man könnte es sich als "eine halbe Script-Laufzeit" vorstellen, ohne Code zu programmieren, nur um es in seine grundlegendsten Aspekte zu zerlegen.

+0

Sie bitte Ihre Erkenntnisse teilen, was hast du schließlich gewählt/done? – menjaraz

Antwort

3

Warum verwenden Sie JvInterpreterParser nicht? es hat nur 2-3 Einheiten Abhängigkeiten ... kann leicht modifiziert werden, um Ihre Bedürfnisse zu erfüllen, und Sie können auch die Geschwindigkeit verbessern, in einem alten Test habe ich eine 80 MB Datei in 6 Sekunden analysiert. auf ein Pentium @ 2,8 Ghz läuft 4 oder so ...

+1

Dann wird die Frage: Gibt es irgendwelche Dokumentation/Beispiele für die Verwendung von JvInterpreterParser? –

+1

@Craig Peterson Ja, es gibt ein sehr gutes Beispiel, die JvInterpreter-Klasse, Sie beginnen im Grunde von Anfang an und nennen etwas wie GetNextToken, bis das Token tkEOF ist und Sie wissen, dass Sie das Ende der Datei erreicht haben, jetzt die Quelle von Der JvInterpreter ist ziemlich groß, aber für eine grundlegende Verwendung können Sie leicht verstehen, wie es verwendet werden kann - wenn Sie mehr als das wollen, dann sollten Sie anfangen zu denken und zu verstehen, wie es funktioniert und die Leistung verbessern (wenn das der Fall ist) – ComputerSaysNo

+1

Ich bin mir nicht sicher, was genau der Castalia Delphi Parser tut, aber TJvInterpreterParser ist eigentlich * kein * Parser; Es ist ein Lexer oder Tokenizer. TJVInterpreterExpression und die verschiedenen Klassen, die davon abstammen, sind Parser. –

Verwandte Themen