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.-
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
