Ich möchte gerne reguläre Ausdrücke maschinell auf eine bestimmte Weise bearbeiten. Dafür suche ich nach einem guten Parser.
Momentan versuche ich mich gerade mit Regexp::Parser. Hat jemand zufällig Erfahrung mit diesem (oder einem anderen) Parser? Kennt jemand eine gute Dokumentation?
(Die Aufzählung der Methoden im Perldoc reicht mir in diesem Fall nicht aus. Ich kann mir zwar im Prinzip alles aus Dumper-Ausgaben erschließen, aber vielleicht gibt es einen weniger steinigen Weg. Die Gefahr dabei etwas falsch zu verstehen oder einfach nicht alle Fälle zu berücksichtigen ist groß.)
Meine Absicht ist, im Prinzip aus einem Ausdruck der Form
(?:a1)?(?:a2)?(?:a3)?b
die folgenden Ausdrücke zu erzeugen:
(?:a1)(?:a2)?(?:a3)?b
(?:a2)(?:a3)?b
(?:a3)b
b
Wobei die a1..a3 Teile natürlich wiederum alles mögliche an Klammern etc. enthalten können.
Und aus
(?:(?:a11)?(?:a12)?)?(?:(?:a21)?(?:a22)?)?b
zunächst
(?:a11)?(?:a12)?(?:a21)?(?:a22)?b
und dann analog
(?:a11)(?:a12)?(?:a21)?(?:a22)?b
(?:a12)(?:a21)?(?:a22)?b
(?:a21)(?:a22)?b
(?:a22)b
b
Das ganze soll der Beschleunigung dienen. Durch Ausdrücke mit sehr vielen optionalen Elementen am Anfang wird die Abarbeitung sehr langsam, weil unheimlich viel an Backtracking geleistet werden muss.
Any hints? Besseres Modul? Doku zu diesem? So weiter machen?\n\n
<!--EDIT|Crian|1113400599-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite