Am Montag, dem 20. Juli, wurde die Veröffentlichung von re2c â dem Generator fĂŒr schnelle lexikalische Analysatoren â bekannt gegeben.
Wesentliche Ănderungen:
UnterstĂŒtzung fĂŒr die Programmiersprache Go hinzugefĂŒgt.
(entweder ĂŒber die Option âlang go fĂŒr re2c oder als separates Programm re2go aktivierbar).
Die Dokumentation fĂŒr C und Go wird aus demselben Text generiert, bietet jedoch unterschiedliche
Codebeispiele. Das Codesystem in re2c wurde vollstĂ€ndig ĂŒberarbeitet, was
die UnterstĂŒtzung neuer Sprachen in Zukunft erleichtern sollte.-
Versuche, re2c auf CMake zu portieren, gab es schon lange, aber bis ligfx hat niemand
eine umfassende Lösung vorgeschlagen.
Das alte Build-System auf Autotools wird weiterhin unterstĂŒtzt und verwendet,
und in absehbarer Zukunft gibt es keine PlÀne, es aufzugeben (teilweise um keine
Probleme fĂŒr die Entwickler von Distributionen zu schaffen, teilweise weil das alte Build-System
stabiler und klarer ist als das neue).
Beide Systeme werden kontinuierlich mithilfe von Travis CI getestet. Die Möglichkeit, Interface-Code in Konfigurationen unter Verwendung des
generischen API (generic API) zu definieren, wurde hinzugefĂŒgt. Zuvor musste die Mehrheit der APIs in Form von
Funktionen oder funktionale Makros. Jetzt können sie in Form von beliebigen
Strings mit benannten Platzhaltern wie @@{name} oder einfach @@ angegeben werden (wenn
es nur einen Parameter gibt und keine Mehrdeutigkeit entsteht). Der API-Stil wird durch die
Konfiguration re2c:api:style festgelegt (der Wert functions legt den funktionalen Stil fest, wĂ€hrend free-form einen beliebigen Stil definiert).Die Funktion der Option -c, âstart-conditions, wurde verbessert, die es ermöglicht, mehrere
miteinander verbundene Lexer in einem re2c-Block zu kombinieren. Jetzt können
regulÀre Blöcke gleichwertig mit bedingten verwendet werden, und es können mehrere nicht verbundene bedingte
Blöcke in einer Datei festgelegt werden.
Die Funktion 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 verbessert
(Lexer mit speichertem Zustand, der an einer beliebigen Stelle unterbrochen
und spĂ€ter fortgesetzt werden kann).Ein Fehler im kĂŒrzlich hinzugefĂŒgten Algorithmus zur Verarbeitung des Endes der Eingabedaten
(EOF-Regel), der in seltenen FĂ€llen zu falscher Verarbeitung fĂŒhrte, wurde behoben.
Die Verarbeitung von ĂŒberlappenden Regeln wurde verbessert.Der Bootstrapping-Prozess wurde vereinfacht. FrĂŒher versuchte das Build-System dynamisch, bereits
ein zusammengebautes re2c, das zur Selbstrekonstruktion verwendet werden kann.
Dies fĂŒhrte zu falschen AbhĂ€ngigkeiten (da der AbhĂ€ngigkeitsgraph
dynamisch war, was die meisten Buildsysteme nicht mögen).
Um die Lexer jetzt neu zu bauen, muss das Buildsystem ausdrĂŒcklich
konfiguriert werden, und die Variable RE2C_FOR_BUILD gesetzt werden.
Danke an alle, die an der Vorbereitung dieser Veröffentlichung beteiligt waren!
Quelle: linux.org.ru
