Am Freitag, den 2. August, wurde die Version re2c â eines freien Generators fĂŒr lexikalische Analysatoren fĂŒr die Programmiersprachen C und C++ â veröffentlicht. Erinnern wir uns daran, dass re2c 1993 von Peter Bambulis als ein experimenteller Generator sehr schneller lexikalischer Analysatoren entwickelt wurde, der sich durch die Geschwindigkeit des generierten Codes und eine ungewöhnlich flexible BenutzeroberflĂ€che auszeichnet, die es ermöglicht, Analysatoren problemlos und effizient in bestehende Codebasen zu integrieren. Seitdem entwickelt sich das Projekt durch die Gemeinschaft weiter und bleibt ein Ort fĂŒr Experimente und Forschungen im Bereich formaler Grammatiken und endlicher Automaten.
Die wichtigsten Neuerungen in Version 1.2:
Eine neue (vereinfachte) Methode zur ĂberprĂŒfung auf das Ende der Eingabedaten wurde hinzugefĂŒgt
(engl. âEOF ruleâ).
DafĂŒr wurde die Konfiguration re2c:eof hinzugefĂŒgt,
hinzugefĂŒgt,
und eine spezielle Regel $, die aktiviert wird, wenn der Lexer
und eine spezielle Regel â$â, die greift, wenn der Lexer
erfolgreich das Ende der Eingabedaten erreicht hat.
Historisch gesehen bietet re2c mehrere Möglichkeiten zur ĂberprĂŒfung auf
das Ende der Eingabedaten an, die in ihrer EinschrÀnkung, Effizienz und Einfachheit variieren.
Der neue Weg soll das Schreiben von Code vereinfachen und bleibt dabei
effizient und weit verbreitet. Die alten Methodenfunktionieren nach wie vor und können in bestimmten FÀllen bevorzugt werden.
/*!include:re2c "file.re" */, гЎД file.re
dies der Name der eingebundenen Datei ist. Re2c sucht nach Dateien im Verzeichnis der eingebundenen Datei,
sowie in der Liste der Pfade, die mit der Option -I angegeben wurden.
Eingeschlossene Dateien können andere Dateien enthalten.
Re2c stellt âStandardâ Dateien im Verzeichnis include/ bereit,
des Projekts â es wird angenommen, dass dort nĂŒtzliche Definitionen gesammelt werden.
von regulĂ€ren AusdrĂŒcken, etwas im Geiste einer Standardbibliothek.
Bisher wurde auf Wunsch der Benutzer eine Datei mit Unicode-Kategoriendefinitionen hinzugefĂŒgt.Die Möglichkeit, Header-Dateien mit beliebigem
mit Inhalt ĂŒber die Optionen -t âtype-header (oder die entsprechenden
Konfigurationen) und neuen Direktiven /*!header:re2c:on*/ und
/*!header:re2c:off*/. ĐŃĐŸ ĐŒĐŸĐ¶Đ”Ń Đ±ŃŃŃ ĐżĐŸĐ»Đ”Đ·ĐœĐŸ ĐČ ŃĐ»ŃŃаŃŃ ,
in denen re2c Definitionen von Variablen, Strukturen und Makros generieren soll,
die in anderen Ăbersetzungseinheiten verwendet werden.Re2c versteht jetzt UTF8-Literale und Zeichendefinitionen in regulĂ€ren AusdrĂŒcken.
StandardmĂ€Ăig analysiert re2c AusdrĂŒcke wie "âx ây" als.
eine Sequenz von 1-Bit ASCII-Zeichen e2 88 80 78 20 e2 88 83 79
(Hex-Codes), und Benutzer mĂŒssen Unicode-Zeichen manuell escapen:
"u2200x u2203y". Dies ist fĂŒr viele sehr unpraktisch und unerwartet.
was durch zahlreiche Fehlermeldungen belegt wird. Daher bietet re2c jetzt die Option ââinput-encoding {ascii | utf8}â an,
Re2c bietet die Option âinput-encoding <ascii | utf8>,
die es ermöglicht, das Verhalten zu Ă€ndern und "âx ây" als
2200 78 20 2203 79.Re2c erlaubt jetzt die Verwendung von regulĂ€ren re2c-Blöcken im Modus -r âreuse.
wiederverwendet werden muss.
Es gibt jetzt die Möglichkeit, das Format von Warnungen und Fehlermeldungenmit der neuen Option ââlocation-format {gnu | msvc}â festzulegen. Das GNU-Format wird angezeigt
mit einer neuen Option âlocation-format <gnu | msvc>. Das GNU-Format wird angezeigt
als filename:line:column:, und das MSVC-Format â als filename(line,column).
AuĂerdem wurde die Option ââverboseâ hinzugefĂŒgt, die eine kurze Erfolgsmeldung im Falle eines Erfolgs ausgibt.
Es wurde auch die Option âverbose hinzugefĂŒgt, die bei Erfolg eine kurze Erfolgsmeldung ausgibt.Der "KompatibilitĂ€tsmodus" mit flex wurde verbessert â einige Analysefehler wurden behoben und
Historisch gesehen ermöglicht die Option â-F âflex-supportâ, Code
Historisch gesehen ermöglicht die Option -F âflex-support das Schreiben von Code
Der KompatibilitÀtsmodus mit flex wird in neuem Code selten verwendet,
aber re2c unterstĂŒtzt ihn weiterhin zur RĂŒckwĂ€rtskompatibilitĂ€t.
Der Operator zum Subtrahieren von Zeichenklassen â/â wird jetzt angewendet.Der Operator zum Subtrahieren von Zeichenklassen / wird jetzt angewendet
vor der Entwicklung der Codierung, die es ermöglicht, sie in einer gröĂeren Anzahl von FĂ€llen anzuwenden,
wenn eine Zeichenkodierung mit variabler ZeichennlÀnge verwendet wird (z. B. UTF8).Die Ausgabedatei wird jetzt atomar erstellt: re2c erstellt zunÀchst eine temporÀre Datei
und schreibt das Ergebnis darin, bevor sie die temporÀre Datei in die Ausgabedatei umbenennt
in einem Schritt.Die Dokumentation wurde ergÀnzt und neu geschrieben; insbesondere wurden neue
und ĂŒber die Methoden zur ĂberprĂŒfung des Endes der Eingabedaten.
Die neue Dokumentation wurde in Form von
ausfĂŒhrlicher einseitiger Handbuch.
mit Beispielen (die gleichen Quellcodes werden in der Man-Seite und in der Online-Dokumentation gerendert).
Es wurden schwache Versuche unternommen, die Lesbarkeit der Website auf Mobiltelefonen zu verbessern.Aus Sicht der Entwickler hat re2c ein vollstÀndigeres Debugging-System erhalten.
Der Debugging-Code ist jetzt in den Release-Builds deaktiviert und
kann ĂŒber die Konfigurationsoption âenable-debug aktiviert werden.
Diese Veröffentlichung hat viel Zeit in Anspruch genommen â fast ein ganzes Jahr.
Die meiste Zeit wurde, wie immer, fĂŒr die Entwicklung der theoretischen Grundlagen und das Schreiben von
des Artikels âEfficient POSIX Submatch Extraction on NFAâ benötigt..
Die im Artikel beschriebenen Algorithmen sind in der experimentellen Bibliothek libre2c implementiert
(Die Bibliothek und die Benchmarks sind standardmĂ€Ăig ausgeschaltet und können mit der configure-Option âenable-libs aktiviert werden). Die Bibliothek ist nicht als Konkurrenz zu bestehenden
Projekten wie RE2 gedacht, sondern als Forschungsplattform fĂŒr die Entwicklung neuer
Algorithmen (die spÀter in re2c oder anderen Projekten verwendet werden können).
Das ist auch praktisch fĂŒr Tests, Benchmarks und die Erstellung von Bindings fĂŒr andere Sprachen.
Ein Dank von den Entwicklern von re2c an alle, die zur Realisierung dieses Releases beigetragen haben,
sowie an die Gemeinschaft fĂŒr Ideen, Fehlerberichte, Patches, den Kampfgeist usw. ;]
werf â unser Tool fĂŒr CI/CD in Kubernetes (Ăberblick und Video der PrĂ€sentation)
Quelle: linux.org.ru
