Am Montag, den 20. Juli, wurde die Version re2c – ein Generator für schnelle lexikalische Analysatoren – veröffentlicht.
Hauptänderungen:
Unterstützung für die Programmiersprache Go hinzugefügt
(aktiviert durch die Option —lang go für re2c oder als separates Programm re2go).
Die Dokumentation für C und Go wird aus demselben Text generiert, jedoch mit unterschiedlichen
Beispielen. Das Codesystem in re2c wurde vollständig überarbeitet, was
die Unterstützung neuer Sprachen in Zukunft erleichtern sollte.-
Bereits vor einiger Zeit gab es Versuche, re2c auf CMake zu portieren, aber bis ligfx hat niemand
eine vollständige Lösung angeboten.
Das alte Build-System basierend auf Autotools bleibt weiterhin unterstützt und genutzt,
und im absehbaren Zeitraum sind keine Pläne vorhanden, dieses aufzugeben (teilweise um nicht
Probleme für die Entwickler von Distributionen zu schaffen, teilweise weil das alte Build-System
stabiler und übersichtlicher ist als das neue).
Beide Systeme werden kontinuierlich mit Travis CI getestet. Die Möglichkeit, Interface-Code in Konfigurationen mit einem
generischen API festzulegen, wurde hinzugefügt. Früher musste die Mehrheit der APIs in Form von
Funktionen oder Funktionalen Makros angegeben werden. Jetzt können sie in Form von beliebigen
Strings mit benannten Template-Parametern wie @@{name} oder einfach @@ (wenn
der Parameter eindeutig ist und keine Mehrdeutigkeit entsteht) angegeben werden. Der API-Stil wird durch die Konfiguration
re2c:api:style festgelegt (der Wert functions definiert einen funktionalen Stil, und free-form – einen beliebigen).Die Funktionsweise der Option -c, —start-conditions, die es ermöglicht, mehrere
verknüpfte Lexer in einem re2c-Block zu kombinieren, wurde verbessert. Jetzt können
gewöhnliche Blöcke neben bedingten verwendet und mehrere nicht verbundene bedingte
Blöcke in einer Datei angegeben werden.
Die Funktionalität der Option -r, —reuse (Wiederverwendung von Code aus einem Block
in anderen Blöcken) wurde in Kombination mit den Optionen -c, —start-conditions und -f, —storable-state
(Lexer mit speicherbarem Zustand, der an beliebiger Stelle unterbrochen
und später fortgesetzt werden kann) verbessert.Ein Fehler im kürzlich hinzugefügten Algorithmus zur Verarbeitung des Endes der Eingabedaten
(EOF-Regel), der in seltenen Fällen zu falschen Verarbeitungen geführt hat, wurde behoben.
Überschneidungen von Regeln wurden vereinfachter gestaltet.Der Bootstrapping-Prozess wurde vereinfacht. Früher versuchte das Build-System dynamisch zu finden,
ob bereits kompilierte re2c verwendet werden konnte, um sich selbst neu zu kompilieren.
Dies führte zu falschen Abhängigkeiten (da das Abhängigkeitsdiagramm dynamisch wurde, was die meisten Build-Systeme nicht mögen).
Jetzt ist es notwendig, um die Lexer neu zu kompilieren, das Build-System explizit zu konfigurieren und die Variable RE2C_FOR_BUILD festzulegen.
Vielen Dank an alle, die an der Vorbereitung dieser Version mitgewirkt haben!
🥇re2c 2.0 | ProHoster
Danke an alle, die bei der Vorbereitung dieses Releases geholfen haben!
Quelle: linux.org.ru
