re2c 1.2

Am Freitag, den 2. August, wurde die Version von re2c veröffentlicht – einem freien Generator für lexikalische Analysatoren für die Programmiersprachen C und C++. Erinnern wir uns daran, dass re2c 1993 von Peter Bambulis als experimenteller Generator für sehr schnelle lexikalische Analysatoren entwickelt wurde, der sich durch die Schnelligkeit des generierten Codes und eine ungewöhnlich flexible Benutzeroberfläche auszeichnet, die eine einfache und effiziente Integration von Analysatoren in bestehende Codebasen ermöglicht. Seitdem wird das Projekt von der Community weiterentwickelt und bleibt ein Experimentierfeld für Forschung in den Bereichen formale Grammatiken und endliche Automaten.

Die wichtigsten Neuerungen in Version 1.2:

  • Ein neuer (vereinfachter) Weg zur Überprüfung auf das Ende der Eingabedaten wurde hinzugefügt
    (engl. „EOF rule“).
    Dazu wurde die Konfiguration re2c:eof hinzugefügt,
    die es ermöglicht, ein Terminalsymbol auszuwählen,
    und eine spezielle Regel $, die aktiviert wird, wenn der Lexer
    erfolgreich das Ende der Eingabedaten erreicht.
    Historisch gesehen bietet re2c mehrere Möglichkeiten zur Überprüfung auf
    das Ende der Eingabedaten, die sich in Begrenztheit, Effizienz und Einfachheit unterscheiden.
    Anwendungen. Eine neue Methode soll das Schreiben von Code vereinfachen und dabei
    effizient und weit verbreitet bleiben. Die alten Methoden
    funktionieren weiterhin und können in bestimmten Fällen bevorzugt werden.

  • Die Möglichkeit, externe Dateien über eine Direktive einzufügen, wurde hinzugefügt.
    /*!include:re2c "file.re" */, где file.re
    hierbei handelt es sich um den Namen der einzufügenden Datei. Re2c sucht Dateien im Verzeichnis der einfügende Datei,
    sowie in der Liste der Pfade, die über die Option -I angegeben wurden.
    Eingefügte Dateien können andere Dateien einschließen.
    Re2c stellt „Standard“-Dateien im Verzeichnis include/ bereit,
    von dem erwartet wird, dass dort nützliche Definitionen für
    reguläre Ausdrücke gesammelt werden, ähnlich wie in einer Standardbibliothek.
    Auf Wunsch der Nutzer wurde vorerst eine Datei mit Definitionen für Unicode-Kategorien hinzugefügt.

  • Es wurde die Möglichkeit hinzugefügt, Header-Dateien mit beliebigem
    Inhalt über die Optionen -t —type-header (oder entsprechende
    Konfigurationen) und neue Direktiven /*!header:re2c:on*/ zu generieren und
    /*!header:re2c:off*/. Это может быть полезно в случаях,
    wann re2c Definitionen für Variablen, Strukturen und Makros generieren muss,
    die in anderen Übersetzungseinheiten verwendet werden.

  • Re2c versteht jetzt UTF8-Literale und Zeichensetzungen 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 Benutzer sehr unbequem und unerwartet,
    was durch ständige Bug-Reports belegt wird. Daher bietet re2c jetzt die Option —input-encoding ,
    mit der das Verhalten geändert werden kann, um "∀x ∃y" als
    Re2c ermöglicht nun die Verwendung normaler re2c-Blöcke im -r —reuse-Modus.
    2200 78 20 2203 79.

  • Dies ist praktisch, wenn die Eingabedatei viele Blöcke enthält und nur einige davon
    wiederverwendet werden müssen.
    Es besteht die Möglichkeit, das Format von Warnungen und Fehlermeldungen

  • mit der neuen Option —location-format festzulegen. Das GNU-Format wird angezeigt
    als filename:line:column:, und das MSVC-Format als filename(line,column).
    Diese Funktion kann für IDE-Liebhaber nützlich sein.
    Es wurde auch die Option —verbose hinzugefügt, die eine kurze Erfolgsnachricht ausgibt.
    Der "Kompatibilitätsmodus" mit flex wurde überarbeitet – einige Parsing-Fehler und

  • falsche Operator-Prioritäten in seltenen Fällen wurden korrigiert.
    die Priorität der Operatoren in seltenen Fällen korrigiert.
    Historisch gesehen ermöglicht die Option -F —flex-support das Schreiben von Code
    im Mix aus Flex- und re2c-Stil, was die syntaktische Analyse etwas erschwert.
    Der Kompatibilitätsmodus mit Flex wird in neuem Code selten verwendet,
    aber re2c unterstützt ihn weiterhin zur Rückwärtskompatibilität.

  • Der Operator für das Substrahieren von Zeichenklassen / wird jetzt angewendet
    vor der Entfaltung der Kodierung, was seine Verwendung in mehr Fällen ermöglicht,
    insbesondere wenn eine Kodierung mit variabler Zeichendauer (zum Beispiel UTF8) verwendet wird.

  • Die Ausgabedatei wird jetzt atomar erstellt: re2c erstellt zunächst eine temporäre Datei
    und schreibt das Ergebnis hinein, bevor die temporäre Datei in eine Ausgabedatei umbenannt
    wird, und zwar in einem einzigen Schritt.

  • Die Dokumentation wurde ergänzt und überarbeitet; insbesondere wurden neue
    Kapiteln hinzugefügt über die Pufferfüllung
    und über Methoden zur Überprüfung auf das Ende der Eingabedaten..
    Die neue Dokumentation ist zusammengefasst in
    einem umfassenden einseitigen Handbuch
    mit Beispielen (die gleichen Quellcodes werden sowohl in der man-Seite als auch in der Online-Dokumentation dargestellt).
    Es wurden nur schwache Versuche unternommen, die Lesbarkeit der Website auf Handys zu verbessern.

  • Aus Sicht der Entwickler hat re2c ein umfassenderes Debugging-System erhalten.
    Der Debug-Code ist jetzt in den Release-Builds deaktiviert und
    kann über die configure-Option —enable-debug aktiviert werden.

Dieser Release 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
einem Artikel „Effiziente POSIX Submatch-Extraktion auf NFA“.
Die in dem Artikel beschriebenen Algorithmen sind in der experimentellen Bibliothek libre2c implementiert
(der Bau der Bibliothek und der Benchmarks ist standardmäßig deaktiviert und kann über die configure-Option
—enable-libs aktiviert werden). Die Bibliothek ist nicht als Konkurrenz zu bereits bestehenden
Projekten wie RE2 gedacht, sondern als Forschungsplattform für die Entwicklung neuer
Algorithmen, die dann in re2c oder in anderen Projekten verwendet werden können.
Dies ist auch praktisch für Tests, Benchmarks und die Erstellung von Bindings zu anderen Sprachen.

Ein Dank von den Entwicklern von re2c an alle, die dazu beigetragen haben, diesen Release zu realisieren,
und an die gesamte Gemeinschaft für Ideen, Bug-Reports, Patches, den kämpferischen Geist usw. ;]

Quelle: linux.org.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster