Am Montag, den 20. Juli, wurde re2c, ein schneller Generator für lexikalische Analysen, veröffentlicht.
Wichtigste Änderungen:
-
Go-Sprachunterstützung hinzugefügt
(aktiviert entweder durch die Option --lang go für re2c oder als separates re2go-Programm).
Die Dokumentation für C und Go wird aus demselben Text generiert, jedoch mit unterschiedlichen
Codebeispiele. Das Codegenerierungs-Subsystem in re2c wurde komplett neu gestaltet
soll es in Zukunft einfacher machen, neue Sprachen zu unterstützen. -
Ein alternatives Build-System für CMake hinzugefügt (danke). ligfx!).
Versuche, re2c in CMake zu übersetzen, wurden schon lange unternommen, aber vor ligfx niemand
eine Komplettlösung angeboten.
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 es nicht zu schaffen).
Probleme für Distributionsentwickler, teilweise aufgrund des alten Build-Systems
stabiler und prägnanter als das neue).
Beide Systeme werden kontinuierlich mit Travis CI getestet. -
Es wurde die Möglichkeit hinzugefügt, bei der Verwendung Schnittstellencode in Konfigurationen festzulegen
generische API. Bisher mussten die meisten APIs im Formular angegeben werden
Funktionen oder Funktionsmakros. Jetzt können sie in beliebiger Form angegeben werden
Zeilen mit benannten Vorlagenparametern wie @@{name} oder nur @@ (falls
es gibt nur einen Parameter und es gibt keine Mehrdeutigkeit). Der API-Stil wird durch die Konfiguration angegeben
re2c:api:style (der Funktionswert gibt einen funktionalen Stil an, und die Freiform gibt einen beliebigen Stil an). -
Die Funktionsweise der Option -c, --start-conditions wurde verbessert, sodass Sie mehrere kombinieren können
miteinander verbundene Lexer in einem re2c-Block. Jetzt können Sie es verwenden
reguläre Blöcke zusammen mit bedingten Blöcken und geben mehrere unabhängige bedingte Blöcke an
Blöcke in einer Datei.
Verbesserte Funktionsweise der Option -r, --reuse (Wiederverwendung von Code aus einem Block
in anderen Blöcken) in Kombination mit den Optionen -c, --start-conditions und -f, --storable-state
(ein zustandsbehafteter Lexer, der jederzeit unterbrochen werden kann
und später mit der Ausführung fortfahren). -
Ein Fehler im kürzlich hinzugefügten End-of-Input-Algorithmus wurde behoben
(EOF-Regel), was in seltenen Fällen zu fehlerhaften Verarbeitungen führte
sich überschneidende Regeln. -
Der Bootstrap-Prozess wurde vereinfacht. Zuvor versuchte das Build-System bereits, dynamisch zu finden
ein re2c-Build, der verwendet werden könnte, um sich selbst neu zu erstellen.
Dies führte zu falschen Abhängigkeiten (da das Abhängigkeitsdiagramm war
dynamisch, was den meisten Build-Systemen nicht gefällt).
Um nun Lexer neu zu erstellen, müssen Sie dies explizit tun
Konfigurieren Sie das Build-System und legen Sie die Variable RE2C_FOR_BUILD fest.
Vielen Dank an alle, die an der Vorbereitung dieser Veröffentlichung beteiligt waren!
Source: linux.org.ru