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