Thread Prefix-Terme berechnen
(19 answers)
Opened by Ronnie at 2005-06-05 01:10
@renee, betreffs Unterschied YAPP, RecDescent.
Beides sind Parser-Generatoren. YAPP ist quasi eine Perl-Implementierung des (bekannten?) YACC. Ist quasi ein standalone-Programm, was aus einer entsprechenden Eingabe ein Perl-Modul erstellt, das man dann in seinem Skript used. Der erzeugte Parser ist ein tabellengesteuerter LALR-Parser aber der Anwender muss einen eigenen Lexer (Tokenizer) zur Verfügung stellen. Zwar gibt es ![]() RecDescent generiert ebenfalls einen Parser, aber dynamisch im Konstruktor, dabei werden die Grammatik-Regeln direkt in Funktionen (Methoden) umgesetzt. Der Lexer entfällt, da direkt Strings oder Regexp in die Produktionen geschrieben werden. Aufgrund des Ansatzes ist ein YAPP-Parser in der Ausführung schneller als ein durch RecDescent erzeugter. RecDescent ist aber schneller in der Vorbereitung und für Prototypen und kleine Applikationen allemal brauchbar. Der erwähnte yagg ist wohl kein Parsergenerator, sondern er erzeugt zu einer Grammatik aller daraus herleitbaren Strings bis zu einer vorgegebenen Länge, während ein Parser ja einen String nimmt und prüft, ob er durch eine gegebene Grammatik erzeugt werden kann und durch welchen Ableitungsbaum. I sense a soul in search of answers.
|