re2c 2.0

V pondělí 20. července byla vydána verze re2c, rychlého generátoru lexikálních analyzátorů.
Hlavní změny:

  • Přidána podpora pro jazyk Go
    (povoleno buď pomocí volby --lang go pro re2c, nebo jako samostatný program re2go).
    Dokumentace pro C a Go je generována ze stejného textu, ale s jiným
    příklady kódu. Subsystém generování kódu v re2c byl zcela přepracován, což
    by měla v budoucnu usnadnit podporu nových jazyků.

  • Přidán alternativní systém sestavení na CMake (díky ligfx!).
    Pokusy o překlad re2c do CMake byly dělány dlouho, ale před ligfx nikdo
    nabídl kompletní řešení.
    Starý systém sestavení na Autotools je nadále podporován a používán,
    a v dohledné době se neplánuje jeho opuštění (částečně proto, aby nevzniklo
    problémy pro vývojáře distribucí, částečně kvůli starému systému sestavení
    stabilnější a stručnější než nový).
    Oba systémy jsou stejně nepřetržitě testovány pomocí Travis CI.

  • Přidána možnost nastavit kód rozhraní v konfiguracích při používání
    generické API (generic API). Dříve musela být většina API specifikována ve formuláři
    funkce nebo makra funkcí. Nyní je lze nastavit ve formě libovolné
    řetězce s pojmenovanými parametry šablony ve tvaru @@{jméno} nebo jen @@ (pokud
    existuje pouze jeden parametr a neexistuje žádná nejednoznačnost). Styl API je konfigurovatelný
    re2c:api:style (hodnota funkcí určuje funkční styl, zatímco hodnota volného tvaru je libovolná).

  • Vylepšené fungování volby -c, --start-conditions, která umožňuje kombinovat několik
    propojené lexery v jednom bloku re2c. Nyní můžete použít
    běžné bloky na stejné úrovni s podmíněnými a nastavte několik nesouvisejících podmíněných
    bloky v jednom souboru.
    Vylepšené volby -r, --reuse (opakované použití kódu z jednoho bloku
    v jiných blocích) v kombinaci s volbami -c, --start-conditions a -f, --storable-state
    (stavový lexer, který lze přerušit na libovolném místě
    a pokračovat v provádění později).

  • Opravena chyba v nově přidaném algoritmu pro zpracování konce vstupních dat
    (pravidlo EOF), což ve vzácných případech vedlo k nesprávnému zpracování
    překrývající se pravidla.

  • Zjednodušený proces bootstrapu. Dříve se systém sestavení snažil dynamicky najít již
    built re2c, který by se dal použít k přestavbě.
    To vedlo k nesprávným závislostem (protože se ukázal graf závislostí
    dynamický, což většina systémů sestavení nemá ráda).
    Nyní, aby bylo možné přestavět lexery, je to výslovně vyžadováno
    nakonfigurujte systém sestavení a nastavte proměnnou RE2C_FOR_BUILD.

Děkujeme všem, kteří přispěli k tomuto vydání!

Zdroj: linux.org.ru

Přidat komentář