Gibt es einen Compiler, der regexp in fsm umwandeln kann? oder könnte zu menschlichen Wörtern konvertieren?

8

Etwas, das

konvertieren kann %Vor%

bis

%Vor%

oder etwas ähnliches

und Akzeptieren in 2 oder 5

    
somethin 24.06.2012, 08:15
quelle

2 Antworten

4

Ich habe einen Code, der das macht. Es ist nicht gut dokumentiert und es wird nicht unterstützt, aber wenn Sie interessiert sind, können Sie es gerne sehen.

Die Bibliothek heißt rxpy und das Repository ist Ссылка

Die Routine zum Parsen ist parse_pattern in Ссылка

Wenn Sie repr(...) für das Ergebnis aufrufen, erhalten Sie eine Grafik in der "Punktsprache" - Ссылка

Sehen Sie sich die Tests beispielsweise als an Ссылка

Um zu zeigen, was ich meine, schauen wir uns den Test unter Ссылка für 'ab*c' :

%Vor%

beginnt bei 0 und kann mit einem "a" übereinstimmen, um zum Status 1 zu gelangen. Von dort können Sie ein "b" zuordnen, um zum Status 2 zu gelangen, oder ein "c", um zum Status 3 zu gelangen. state 2 hat dann einen Übergang zurück zu 1 , der ein anderes "b" usw. verbrauchen kann. Es ist ein bisschen hässlich, von Hand zu lesen, aber wenn der Test fehlschlägt, wird ein kleines Diagramm auf dem Bildschirm angezeigt.

Die Bibliothek hat auch verschiedene "engines", die Strings mit diesem Graphen abgleichen (und so auch den regulären Ausdruck anpassen). aber es ist viel langsamer als die Python-Bibliothek (weil es pure Python ist).

dies wird nicht unterstützt und ist möglicherweise nicht sehr klar - sorry - aber ich denke, es ist nahe, was Sie wollen, und Sie können es gerne verwenden, wenn es nützlich ist (MPL oder LGPL-Lizenz).

    
andrew cooke 24.06.2012, 12:46
quelle
6

Sie haben ein Debugflag , das Ihre Regexp in einer besser lesbaren Form ausgibt:

%Vor%     
kosii 24.06.2012 10:43
quelle