re2c 2.0

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.

  • Ein alternatives Build-System auf CMake wurde hinzugefĂŒgt (danke an ligfx.!).


    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

ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen đŸ”„ ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster