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
