re2c 2.0

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

Kommentar hinzufügen