Frage

Bei einem regulären Ausdruck, ich bin auf der Suche nach einem Paket, das den Code für eine Finite-State-Maschine dynamisch generieren, die die RE implementiert.

C / C ++ und Python bevorzugt, aber auch andere Sprachen sind von Interesse.

War es hilfreich?

Lösung

re2c erzeugt C-Code. Ich bin nicht sicher, was Sie mit ‚dynamisch‘ - AFAIK Sie kompilieren müssten und dynamisch-laden die Ausgabe, wenn Sie auf den generierten Code im gleichen Lauf aufrufen wollen, dass Sie es erzeugt

.

Andere Tipps

Ragel kann sein, was für Ihre suchen.

Es erzeugt C / C ++ / D / Rubin / Java-Code für Zustandsmaschinen. Diese sind sowohl mit regulären Ausdrücken und Operatoren.

Überprüfen Sie die Website, ihre Titelseite ganz explizit ist.

Es ist vielleicht nicht genau das, was Sie suchen, aber der Xerox transduktor unterstützt reguläre Ausdrücke, baut die Maschine, und sogar eine grafische Darstellung mit GraphViz erstellen können.

Es ist wirklich raffinierte für Dinge wie Morphologie, aber ansonsten habe ich es in erster Linie würde vorschlagen, wenn Sie etwas suchen, die theoretische Seite der Finite-State-Maschinen zu erkunden.

Zwei Vorbehalte: Es verwendet eine eigene Syntax, so ist es nicht unbedingt auf Ihre Sprachen der Wahl leicht gehen zu übersetzen vorbei, und ich bin mir ziemlich sicher, dass Sie eine Lizenz für sie bekommen. Es kommt mit Karttunnen und Beesley Buch „Finite State Morphology“, das ist eine sehr interessante Lektüre in seinem eigenen Recht.

Die Finite State Automata Dienstprogramme von regulären Ausdrücken Generation von FSMs unterstützt. Es unterstützt auch C, C ++ und Java Code-Generierung für FSMs. Es unterstützt dynamische Generation, aber es ist in Prolog geschrieben und aus einer anderen Sprache nennen könnte ein Streit sein.

Was Sie fordern für eine Lexer ... Es gibt viele von ihnen für eine Vielzahl von Programmiersprachen. Für einen Start können Sie einen Blick hier .

Eine gute Python-Implementierung eines Wandlers von Regular Expression zu Finite State Machine ist https://github.com/ferno / Grün . Es ist auf pypi über ‚pip installieren Grün‘.

Ein weiteres Python-Paket verwendet Grün iterative Parser zu implementieren: Communications Protocol Python Parser und Originator https://github.com/ pjkundert / cpppo . Es ist auch über ‚cpppo installieren pip‘. Cpppo ist leider recht komplex, wegen dem Versuch, in keinem kleinen Teil sowohl Python 2 und 3 in der gleichen Quelle zu unterstützen, einschließlich der vollständigen UTF-8-Kompatibilität.

Wie auch immer, cpppo sollten Sie eine Vorstellung davon, wie das ausgezeichnete Grün Regex auf FSM-Wandler anzuwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top