Am Dienstag, den 19. November, wurde die Veröffentlichung vorgestellt re2c – eines Generators für lexikalische Analysatoren (auch bekannt als Compiler für reguläre Ausdrücke in Code auf der Zielsprache). re2c spezialisiert sich auf die Erzeugung schneller und leicht einbettbarer Lexer. Es unterscheidet sich von dem bekannteren Pendant flex durch eine flexible Schnittstelle, die Erzeugung optimierter, nicht-tabellarischer Lexer und die Unterstützung von Submatch-Extraktionen auf Basis von deterministischen endlichen Automaten mit Tags (TDFA). re2c wird in Projekten eingesetzt, in denen die Geschwindigkeit des Lexers entscheidend ist, zum Beispiel in Ninja und in PHP.
In der Version 4.0 wurde das Code-Generierungssystem grundlegend überarbeitet, was es ermöglichte, Unterstützung für acht neue Sprachen (D, Haskell, Java, JavaScript, OCaml, Python, V, Zig) hinzuzufügen, zusätzlich zu den bereits unterstützten (C/C++, Go, Rust), sowie einen allgemeinen Mechanismus zum Hinzufügen neuer Sprachen über Konfigurationsdateien. Der Code-Generator ist dafür verantwortlich, den bereits erstellten und optimierten endlichen Automaten in Code zu übersetzen, das heißt, seine Aufgabe ist es, geeignete Kontrollstrukturen, Datentypen, das allgemeine Programmmodell usw. für die Zielsprache auszuwählen. Früher war all diese Logik Teil des re2c-Quellcodes, 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 akzeptiert, ohne dass eine Standardreihe von Beispielen und Tests implementiert wurde, was den gesamten Prozess zusätzlich erschwerte. Jetzt wurde all diese Logik in Syntax-Dateien – textuelle Konfigurationsdateien, die vom Benutzer bereitgestellt werden können (standardmäßig verwendet re2c die Standarddateien). Der Quellcode von re2c ist vollständig frei von spezifischen Sprachdetails und verlässt sich ausschließlich auf die Syntaxdatei. Der Benutzer kann eine vorhandene Syntaxdatei teilweise überschreiben oder eine neue von Grund auf neu schreiben. Für alle offiziell unterstützten Sprachen gibt es vollständige Dokumentation mit Beispielen.
Übrigens entstand die Idee der Syntaxdateien dank einem Kommentar im LOR, dafür vielen Dank an
the_coder.
In der Veröffentlichung sind viele weitere Änderungen zur Vereinfachung der Benutzeroberfläche, zur Verbesserung der Arbeit mit fassenden Gruppen (capturing groups) sowie eine Online-Umgebung zum Bearbeiten und Kompilieren von Beispielen hinzugekommen: http://re2c.org/playground.
Quelle: linux.org.ru
