re2c 2.0

V pondelok 20. júla bol vydaný re2c, rýchly generátor lexikálneho analyzátora.
Hlavné zmeny:

  • Pridaná podpora jazyka Go
    (povolené buď voľbou --lang go pre re2c, alebo ako samostatný program re2go).
    Dokumentácia pre C a Go je generovaná z rovnakého textu, ale s iným
    príklady kódov. Subsystém generovania kódu v re2c bol úplne prepracovaný, čo
    by mala v budúcnosti uľahčiť podporu nových jazykov.

  • Pridaný alternatívny systém zostavovania pre CMake (vďaka ligfx!).
    Pokusy prelozit re2c do CMake sa robili uz davno, ale pred ligfx nikto
    ponúkol kompletné riešenie.
    Starý systém zostavovania Autotools je naďalej podporovaný a používaný,
    a v dohľadnej dobe sa ho neplánuje opustiť (čiastočne preto, aby sa nevytvoril
    problémy pre vývojárov distribúcie, čiastočne kvôli starému systému zostavovania
    stabilnejší a stručnejší ako nový).
    Oba systémy sú priebežne testované pomocou Travis CI.

  • Pridaná možnosť nastaviť kód rozhrania v konfiguráciách pri používaní
    generické API. Predtým musela byť väčšina API špecifikovaná vo formulári
    funkcie alebo funkčné makrá. Teraz môžu byť špecifikované vo forme ľubovoľnej
    riadky s pomenovanými parametrami šablóny ako @@{meno} alebo len @@ (ak
    existuje len jeden parameter a nie je tam žiadna nejednoznačnosť). Štýl API je určený konfiguráciou
    re2c:api:style (hodnota funkcií určuje funkčný štýl a voľný tvar určuje ľubovoľný štýl).

  • Prevádzka voľby -c, --start-conditions bola vylepšená, čo vám umožňuje kombinovať niekoľko
    prepojené lexery v jednom bloku re2c. Teraz môžete použiť
    pravidelné bloky spolu s podmienenými blokmi a špecifikujte niekoľko nesúvisiacich podmienených blokov
    bloky v jednom súbore.
    Vylepšená prevádzka voľby -r, --reuse (opätovné použitie kódu z jedného bloku
    v iných blokoch) v kombinácii s voľbami -c, --start-conditions a -f, --storable-state
    (stavový lexer, ktorý možno kedykoľvek prerušiť
    a pokračovať vo vykonávaní neskôr).

  • Opravená chyba v nedávno pridanom algoritme ukončenia vstupu
    (pravidlo EOF), čo v ojedinelých prípadoch viedlo k nesprávnemu spracovaniu
    prekrývajúcich sa pravidiel.

  • Proces bootstrap bol zjednodušený. Predtým sa zostavovací systém pokúšal dynamicky nájsť už
    zostava re2c, ktorá by sa dala použiť na prestavbu.
    To malo za následok nesprávne závislosti (keďže graf závislosti bol
    dynamický, čo sa väčšine zostavovacích systémov nepáči).
    Ak chcete prestavať lexery, musíte to urobiť výslovne
    nakonfigurujte zostavovací systém a nastavte premennú RE2C_FOR_BUILD.

Ďakujeme všetkým, ktorí sa podieľali na príprave tohto vydania!

Zdroj: linux.org.ru

Pridať komentár