Die Veröffentlichung des lexikalischen Analysegenerator re2c 1.2

Es fand Release re2c, eines freien Generators fĂŒr lexikalische Analysatoren in den Programmiersprachen C und C++. Es sei daran erinnert, dass re2c 1993 von Peter Bambulys als experimenteller Generator fĂŒr extrem schnelle lexikalische Analysatoren entwickelt wurde. Dieser hebt sich durch die Schnelligkeit des generierten Codes und eine außergewöhnlich flexible BenutzeroberflĂ€che hervor, die eine einfache und effiziente Integration von Analysatoren in bestehende Codebasen ermöglicht. Seitdem wird das Projekt von der Gemeinschaft weiterentwickelt und bleibt eine Plattform fĂŒr Experimente und Forschungen im Bereich formale Grammatiken und endliche Automaten.

Die Vorbereitung des Releases hat fast ein ganzes Jahr in Anspruch genommen. Wie immer ging die meiste Zeit in die Entwicklung der theoretischen Grundlagen und das Schreiben
des Artikels „Efficient POSIX Submatch Extraction on NFA«.
Die in dem Artikel beschriebenen Algorithmen sind in der experimentellen Bibliothek libre2c implementiert
(der Aufbau der Bibliothek und der Leistungstests ist standardmĂ€ĂŸig deaktiviert und kann durch die configure-Option „—enable-libs“ aktiviert werden). Die Bibliothek ist nicht als Konkurrenz zu bestehenden Projekten wie RE2 gedacht, sondern vielmehr als Forschungsplattform fĂŒr die Entwicklung neuer
Algorithmen, die spĂ€ter in re2c oder in anderen Projekten verwendet werden können. Dies ist auch praktisch fĂŒr Tests, Leistungsmetriken und die Erstellung von Bindings zu anderen Sprachen.

Die wichtigsten Neuerungen in Version re2c 1.2:

  • Eine neue vereinfachte Möglichkeit zur ÜberprĂŒfung des Endes der Eingabedaten („EOF-Regel“) wurde hinzugefĂŒgt. HierfĂŒr wurde die Konfiguration „re2c:eof“ hinzugefĂŒgt,
    die es ermöglicht, ein Terminalsymbol auszuwÀhlen,
    und eine spezielle Regel „$“, die greift, 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“ */“, wobei „file.re“ der Name der einzufĂŒgenden Datei ist. Re2c sucht nach Dateien im Verzeichnis der einbindenden Datei,
    sowie in der Liste von Pfaden, die mit der Option „-I“ angegeben sind.
    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
    mit dem Inhalt durch die Optionen „-t —type-header“ (oder entsprechenden
    Konfigurationen) und neuen Direktiven „/*!header:re2c:on*/“ und
    „/*!header:re2c:off*/“. Dies kann in FĂ€llen nĂŒtzlich sein,
    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 parsed re2c AusdrĂŒcke wie „∀x ∃y“ als
    eine Folge 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
    was durch stĂ€ndige Bug-Reports belegt wird. Daher bietet re2c jetzt die Option —input-encoding ,
    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“ zu parsen.
  • Re2c ermöglicht jetzt die Verwendung von normalen re2c-Blöcken im Modus „-r —reuse“.
    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
    mit der neuen Option „—location-format {gnu | msvc}“. Das GNU-Format wird angezeigt
    als „dateiname:zeile:spalte:“, wĂ€hrend das MSVC-Format als „dateiname(zeile,spalte)“ angezeigt wird.
    Es wurde auch die Option —verbose hinzugefĂŒgt, die eine kurze Erfolgsnachricht ausgibt.
    ZusĂ€tzlich wurde die Option „—verbose“ hinzugefĂŒgt, die eine kurze Erfolgsmeldung im Falle eines Erfolgs ausgibt.
  • Der KompatibilitĂ€tsmodus mit flex wurde ĂŒberarbeitet – einige Parsing-Fehler wurden behoben und
    die PrioritÀt der Operatoren in seltenen FÀllen korrigiert.
    Historisch gesehen ermöglicht die Option „-F —flex-suppor“ 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 die Subtraktion von ZeichensĂ€tzen „/“ 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
    Kapitel ĂŒber http://re2c.org/manual/manual.html#buffer-refilling BufferauffĂŒllung
    und ĂŒber Methoden zur ÜberprĂŒfung auf das Ende der Eingabedaten..
    Die neue Dokumentation ist zusammengefasst in
    ausfĂŒhrliches einseitiges 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 durch die configure-Option „—enable-debug“ aktiviert werden.

Quelle: opennet.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