V utorok, 19. novembra, bol predstavený release re2c – generátora lexikálnych analyzátorov (t.j. kompilátor regulárnych výrazov do kódu v cieľovom programovacom jazyku). re2c sa špecializuje na generovanie rýchlych a ľahko vkladajúcich sa lexérov. Od svojho známejšieho ekvivalentu flex sa odlišuje flexibilným rozhraním, generovaním optimalizovaných netabulkových lexérov a podporou zachytávania (submatch extraction) založenou na deterministických konečných automatoch s tagmi (TDFA). re2c sa používa v projektoch, kde je dôležitá rýchlosť prevádzky lexérov, napríklad v Ninja a PHP.
V release 4.0 bola zásadne prepracovaná subsystém generovania kódu, čo umožnilo pridať podporu pre osem nových jazykov (D, Haskell, Java, JavaScript, OCaml, Python, V, Zig) okrem už podporovaných (C/C++, Go, Rust), ako aj spoločný mechanizmus pridávania nových jazykov prostredníctvom konfiguračných súborov. Kódový generátor zodpovedá za preklad už postaveného a optimalizovaného konečného automatu do kódu, čo znamená, že jeho úlohou je vybrať vhodné riadiace konštrukcie pre cieľový jazyk, typy údajov, všeobecnú model programu atď. Predtým bola celá táto logika súčasťou zdrojového kódu re2c, a aby ju bolo možné zmeniť alebo pridať nový jazyk, bolo potrebné patchovať zdrojový kód a znova zostaviť re2c. Takéto patche sa neprijímali do hlavného repozitára bez zavedenia štandardnej sady príkladov a testov, čo dodatočne sťažovalo celý proces. Teraz je celá táto logika presunutá do syntaktických súborov – textových konfiguračných súborov, ktoré môže poskytnúť používateľ (predvolene re2c používa štandardné). Zdrojový kód re2c je úplne zbavený detailov konkrétneho jazyka a spolieha sa len na syntaktický súbor. Používateľ môže čiastočne prepísať existujúci syntaktický súbor alebo napísať nový od nuly. Pre všetky oficiálne podporované jazyky je úplná dokumentácia s príkladmi.
Mimochodom, samotná myšlienka syntaktických súborov vznikla vďaka jednému komentáru na LOR-e, za čo ďakujeme
the_coder.
Do release bolo zahrnutých mnoho ďalších zmien na zjednodušenie používateľského rozhrania, vylepšení práce so zachytávacími skupinami (capturing groups), ako aj bola pridaná online prostredie na úpravu a kompiláciu príkladov: http://re2c.org/playground.
Zdroj: linux.org.ru
