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
