Ich habe viel über Haskell Parser Combinators gelesen und eine Menge Themen gefunden wie:
Aber alle diese Themen vergleichen Parser Combinators
mit Parser Generators
.
Ich möchte Sie fragen, welche von Parser Combinator
am besten zu folgenden Bedingungen passt:
Ich habe herausgefunden, dass die beliebtesten Parser-Kombinatoren sind:
Ich würde sagen definitiv gehen mit Parsec, warum warum:
Attoparsec wurde entwickelt, um schnell verwendet zu werden, aber es fehlt die starke Unterstützung für Fehlermeldungen, die Sie in Parsec erhalten, also ist das ein Gewinn für Ihren ersten Punkt.
Meine Erfahrung mit Parser-Kombinator-Bibliotheken besteht darin, dass es sehr einfach ist, einzelne Teile des Parsers entweder in GHCi oder in Tests zu testen, sodass der zweite Punkt von allen wirklich erfüllt wird. Schließlich sind Attoparsec und Parsec ziemlich verdammt schnell.
Schließlich ist Parsec am längsten dabei und hat viele nützliche und fortgeschrittene Funktionen. Dies bedeutet, dass die allgemeine Wartbarkeit einfacher wird, mehr Beispiele in Parsec vorhanden sind und mehr Menschen damit vertraut sind. uu-parsinglib ist definitiv die Zeit wert, um sie zu erforschen, aber ich würde vorschlagen, dass Parsc zuerst aus diesen Gründen der bessere Kurs ist. (Alex ist auch der am meisten empfohlene Lexer, um mit Parsec oder anders zu verwenden, aber ich habe es selbst nicht benutzt.)
Ich werde meine Antwort hier posten, falls jemand diese Frage findet. Die aktuelle Antwort ist ziemlich veraltet.
Es ist besser, das Paket megaparsec
als Parser-Kombinatorbibliothek zu verwenden. Es ist eine moderne produktionsfertige Bibliothek. Und sein README.md
enthält einen ausgezeichneten Vergleich mit anderen Parser-Kombinator-Bibliotheken:
Tags und Links haskell parsing parsec parser-combinators attoparsec