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 Methoden

  • funktionieren 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 Fehlermeldungen

  • mit 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
    Abschnitt ĂŒber das PufferfĂŒllen.
    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

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster