re2c 2.0

V pondělí 20. července vyšel release re2c – generátoru rychlých lexikálních analyzátorů.
Hlavní změny:

  • Byla přidána podpora jazyka Go
    (zapnuto buď volbou —lang go pro re2c, nebo jako samostatný program re2go).
    Dokumentace pro C a Go se generuje ze stejného textu, ale s různými
    příklady kódu. Celá subsystém generování kódu v re2c byla zcela přepracována, což
    by mělo usnadnit podporu nových jazyků v budoucnu.

  • Byl přidán alternativní systém buildů na CMake (děkujeme ligfx!).


    Pokusy převést re2c na CMake se dělaly už dlouho, ale až do ligfx nikdo
    nepředložil plnohodnotné řešení.
    Starý systém buildů na Autotools stále pokračuje v podpoře a používání,
    a v dohledné budoucnosti nejsou plány se ho vzdát (částečně, aby se nevytvářely
    problémy pro vývojáře distribucí, částečně proto, že starý systém buildů
    je stabilnější a výstižnější než nový).
    Oba systémy se rovnocenně neustále testují pomocí Travis CI.
  • Byla přidána možnost zadání rozhraní v konfiguracích při použití
    obecného API (generic API). Dříve většinu API bylo nutné definovat ve formě
    funkcí nebo funkčních makro. Nyní je možné je definovat ve formě libovolných
    řetězců s pojmenovanými šablonovými parametry ve formátu @@{name} nebo jednoduše @@ (pokud
    je parametr jediný a nevzniká nejednoznačnost). Styl API se určuje konfigurací
    re2c:api:style (hodnota functions určuje funkční styl, a free-form – volný).

  • Byla vylepšena funkce volby -c, —start-conditions, která umožňuje kombinovat několik
    vzájemně souvisejících lexerů v jednom re2c bloku. Nyní je možné používat
    běžné bloky stejně jako podmíněné a definovat několik nesouvislých podmíněných
    bloků v jednom souboru.
    Byla vylepšena funkce volby -r, —reuse (znovupoužití kódu z jednoho bloku
    v jiných blocích) v kombinaci s volbami -c, —start-conditions a -f, —storable-state
    (lexer se zachovaným stavem, který lze přerušit kdekoli
    a pokračovat později).

  • Byla opravená chyba v nedávno přidaném algoritmu zpracování konce vstupních dat
    (EOF rule), která vedla v ojedinělých případech k nesprávnému zpracování
    překrývajících se pravidel.

  • Byl zjednodušen proces bootstrappingu. Dříve se systém buildů snažil dynamicky najít již
    sestavený re2c, který by bylo možné použít pro znovu-sestavení sebe sama.
    To vedlo k nesprávným závislostem (protože graf závislostí se stal
    dynamickým, což většina systémů pro sestavení nemá ráda).
    Nyní je potřeba explicitně
    konfigurovat systém pro sestavení a nastavit proměnnou RE2C_FOR_BUILD.

Děkujeme všem, kteří se podíleli na přípravě této verze!

Zdroj: linux.org.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster