2009-04-07 9 views
3

Ich arbeite derzeit an einem Test-Framework für reguläre Ausdrücke, und ich muss in der Lage sein, Java-reguläre Ausdrücke in ASTs zu analysieren, um Beispielstrings zu erzeugen, die der gegebenen Regex entsprechen.ANTLR-Grammatik für Java Regular Expression-Syntax

Ich schaute auf die Implementierung von java.util.regex.Pattern, aber der Code sieht ziemlich sperrig (der Schwerpunkt lag auf Geschwindigkeit über Lesbarkeit, die ich mir vorstellen würde), so entschied ich mich, ANTLR verwenden, um einen Regex-Parser von Grund auf zu schreiben.

Ich frage mich, ob jemand eine fertige ANTLR-Grammatik für Regex kennt, bevor ich anfange, mich selbst zu verprügeln.

Antwort

3

Es gibt eine ähnliche Frage hier:

Regex Grammar

Die Antworten enthalten Links zu verschiedenen Grammatiken, keiner von ihnen ANTLR diejenigen. Ich vermute, dass Sie, wenn Sie die BNF in ANTLR übersetzen würden, von Links-Rekursionskopfschmerzen geplagt wären, aber es ist einen Versuch wert, Sie könnten Glück haben.

+0

Um mit der linken Rekursion umzugehen, siehe http://javadude.com/articles/lalrtoll.html - auch glaube ich, dass einige der ANTLR 3-Tools dabei helfen können, die linke Rekursion zu eliminieren. –

+0

Leider sind die in der Frage angegebenen nicht wirklich für meine Bedürfnisse geeignet. Ich beschloss, die ANTLR-Grammatik von Grund auf neu zu implementieren und sie sieht gut aus. Trotzdem waren die Beispiele ein guter Ausgangspunkt, danke. –