Am Dienstag, dem 19. November, wurde die Veröffentlichung re2c â des Lexikalischen Analysewerkzeugs (auch bekannt als Compiler fĂŒr regulĂ€re AusdrĂŒcke in den Zielprogrammiersprachen). re2c ist auf die Generierung von schnellen und einfach einbettbaren Lexern spezialisiert. Es unterscheidet sich von dem bekannteren Pendant flex durch eine flexible Schnittstelle, die Generierung optimierter, nicht-tabellarischer Lexer und die UnterstĂŒtzung von Submatch-Extraktionen, die auf deterministischen endlichen Automaten mit Tags basieren (TDFA). re2c wird in Projekten eingesetzt, bei denen die Geschwindigkeit des Lexers wichtig ist, beispielsweise in Ninja und PHP.
In der Version 4.0 wurde das Untersystem zur Codegenerierung grundlegend ĂŒberarbeitet, was die UnterstĂŒtzung von acht neuen Sprachen (D, Haskell, Java, JavaScript, OCaml, Python, V, Zig) zusĂ€tzlich zu den bereits unterstĂŒtzten (C/C++, Go, Rust) ermöglichte sowie einen allgemeinen Mechanismus zum HinzufĂŒgen neuer Sprachen ĂŒber Konfigurationsdateien. Der Code-Generator ist verantwortlich fĂŒr die Ăbersetzung des bereits erstellten und optimierten endlichen Automaten in Code, das heiĂt, seine Aufgabe besteht darin, die fĂŒr die Zielsprache passenden Steueranweisungen, Datentypen, das allgemeine Modell des Programms usw. auszuwĂ€hlen. FrĂŒher war diese gesamte Logik Teil des Quellcodes von re2c, und um sie zu Ă€ndern oder eine neue Sprache hinzuzufĂŒgen, musste man den Quellcode patchen und re2c neu kompilieren. Solche Patches wurden im Hauptrepository nicht angenommen, ohne dass eine Standardreihe von Beispielen und Tests implementiert wurde, was den gesamten Prozess zusĂ€tzlich erschwerte. Nun wurde diese gesamte Logik in die Syntaxdateien â textbasierte Konfigurationsdateien, die vom Benutzer bereitgestellt werden können (standardmĂ€Ăig verwendet re2c die Standardkonfiguration). Der Quellcode von re2c ist völlig unabhĂ€ngig von den Details einer bestimmten Sprache und stĂŒtzt sich ausschlieĂlich auf die Syntaxdatei. Der Benutzer kann bestehende Syntaxdateien teilweise ĂŒberschreiben oder eine neue von Grund auf neu schreiben. FĂŒr alle offiziell unterstĂŒtzten Sprachen gibt es eine vollstĂ€ndige Dokumentation mit Beispielen.
Ăbrigens stammt die Idee der Syntaxdateien von einem Kommentar auf LOR, dafĂŒr ein Dankeschön an
the_coder.
Im Release sind viele weitere Ănderungen zur Vereinfachung der BenutzeroberflĂ€che, zur Verbesserung der Arbeit mit den capturing groups sowie eine Online-Umgebung zur Bearbeitung und Kompilierung von Beispielen enthalten: http://re2c.org/playground.
Quelle: linux.org.ru
