Die Veröffentlichung des Lexikanalysator-Generators re2c 1.2

Hat stattgefunden Release re2c, ein freier Generator von Lexikanalysatoren fĂŒr die Programmiersprachen C und C++. Erinnern wir uns daran, dass re2c 1993 von Peter Bambulys als experimenteller Generator fĂŒr sehr schnelle Lexikanalysatoren geschrieben wurde, der sich durch die Geschwindigkeit des generierten Codes und eine ungewöhnlich flexible BenutzeroberflĂ€che auszeichnet, die das einfache und effiziente Einbinden von Analysatoren in bestehende Codebasen ermöglicht. Seitdem wird das Projekt von der Community weiterentwickelt und bleibt eine Plattform fĂŒr Experimente und Forschung auf dem Gebiet der formalen Grammatiken und endlichen Automaten.

Die Vorbereitung des Releases hat fast ein ganzes Jahr gedauert. Wie immer ging ein Großteil der Zeit fĂŒr die Entwicklung der theoretischen Basis und das Schreiben
des Artikels „Effiziente POSIX-TeilĂŒbereinstimmungs-Extraktion auf NFA«.
Die im Artikel beschriebenen Algorithmen sind in der experimentellen Bibliothek libre2c implementiert
(der Bau der Bibliothek und der Leistungstests ist standardmĂ€ĂŸig deaktiviert und kann mit der configure-Option „—enable-libs“ aktiviert werden). Die Bibliothek ist nicht als Konkurrenz zu bestehenden Projekten wie RE2 gedacht, sondern als Forschungsplattform zur Entwicklung neuer
Algorithmen (die spĂ€ter in re2c oder anderen Projekten verwendet werden können). Außerdem ist dies aus Sicht der Tests, der Leistungsbemessung und der Erstellung von Bindings fĂŒr andere Sprachen nĂŒtzlich.

Die wichtigsten Neuerungen in der Version re2c 1.2:

  • Es wurde ein neuer vereinfachter Weg zur ÜberprĂŒfung des Endes der Eingabedaten („EOF-Regel“) hinzugefĂŒgt. DafĂŒr wurde die Konfiguration „re2c:eof“
    hinzugefĂŒgt,
    die es ermöglicht, ein Endsymbol auszuwÀhlen,
    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.
    Es wurde die Möglichkeit hinzugefĂŒgt, externe Dateien mittels der Direktive
    „/*!include:re2c „file.re“ */“, wobei „file.re“ der Name der einzuschließenden Datei ist. Re2c sucht Dateien im Verzeichnis der einbindenden Datei,
    Eingeschlossene Dateien können andere Dateien enthalten.
    Re2c stellt „Standard“-Dateien im Verzeichnis „include/“ zur VerfĂŒgung.
    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
    Inhalt mithilfe der Optionen „-t —type-header“ (oder entsprechender
    Konfigurationen) und neuer Direktiven „/*!header:re2c:on*/“ und
    „/*!header:re2c:off*/“ zu generieren, wurde hinzugefĂŒgt. Dies kann in FĂ€llen nĂŒtzlich sein,
    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 Benutzer sehr umstĂ€ndlich und unerwartet,
    was durch zahlreiche Fehlermeldungen belegt wird. Daher bietet re2c jetzt die Option „—input-encoding {ascii | utf8}“ an,
    um das Verhalten zu Ă€ndern und „∀x ∃y“ als
    „2200 78 20 2203 79“ zu parsen.
    Re2c ermöglicht jetzt die Verwendung klassischer re2c-Blöcke im Modus „-r —reuse“.
  • Das ist praktisch, wenn die Eingabedatei viele Blöcke enthĂ€lt und nur ein Teil davon
    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
    als „filename:line:column:“, das MSVC-Format als „filename(line,column)“.
    Diese Funktion kann fĂŒr IDE-Enthusiasten nĂŒtzlich sein.
    Außerdem wurde die Option „—verbose“ hinzugefĂŒgt, die eine kurze Erfolgsmeldung im Falle eines Erfolgs ausgibt.
    Der KompatibilitÀtsmodus mit flex wurde verbessert - einige Parsing-Fehler wurden behoben und
  • die falsche PrioritĂ€t von Operatoren in seltenen FĂ€llen korrigiert.
    Historisch gesehen ermöglicht die Option „-F —flex-support“, Code
    mischweise im flex- und re2c-Stil zu schreiben, 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 zum Subtrahieren von Zeichenklassen „/“ wird jetzt angewendet.
  • Der Subtraktionsoperator fĂŒr 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
    Kapitel ĂŒber http://re2c.org/manual/manual.html#buffer-refilling das AuffĂŒllen des Puffers
    und ĂŒber die Methoden zur ÜberprĂŒfung des Endes der Eingabedaten.
    Die neue Dokumentation wurde in Form von
    einem umfassenden einseitigen Handbuch zusammengestellt
    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 mit der Konfigurationsoption "—enable-debug" aktiviert werden.

Quelle: opennet.ru

60GB SSD 8Gb DDR4