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