re2c 4.0

U utorak, 19. studenog, predstavljena je verzija re2c – generatora leksičkih analizatora (također poznatog kao kompajler regularnih izraza u kod na ciljanom programskom jeziku). re2c se specijalizira za generiranje brzih i lako ugrađivih leksika. Razlikuje se od poznatijeg analoga flex fleksibilnim sučeljem, generiranjem optimiziranih ne-tabelarnih leksika i podrškom za ekstrakciju podudaranja (submatch extraction) temeljenom na determinističkim konačnim automatima s oznakama (TDFA). re2c se koristi u projektima gdje je brzina rada leksika važna, primjerice u Ninja i u PHP-u.

U verziji 4.0 iz temelja je redizajniran podsustav generiranja koda, što je omogućilo dodavanje podrške za osam novih jezika (D, Haskell, Java, JavaScript, OCaml, Python, V, Zig) uz već podržane (C/C++, Go, Rust), kao i opći mehanizam za dodavanje novih jezika putem konfiguracijskih datoteka. Kodenerator odgovara za prevođenje već izgrađenog i optimiziranog konačnog automata u kod, dakle njegov zadatak je odabrati odgovarajuće upravljačke strukture, tipove podataka, opći model programa itd. Ranije je cijela ova logika bila dio izvornog koda re2c, i da bi se promijenila ili dodao novi jezik, bilo je potrebno patchirati izvorni kod i ponovno kompajlirati re2c. Takvi patch-evi nisu se prihvaćali u glavni repozitorij bez provedbe standardnog skupa primjera i testova, što je dodatno kompliciralo cijeli proces. Sada se cijela ta logika prebacila u sintaktičke datoteke – tekstualne konfiguracijske datoteke koje korisnik može pružiti (po defaultu re2c koristi standardne). Izvorni kod re2c je potpuno slobodan od detalja specifičnih za jezik i oslanja se isključivo na sintaktičku datoteku. Korisnik može djelomično poništiti postojeću sintaktičku datoteku ili napisati novu od nule. Za sve službeno podržane jezike postoji potpuna dokumentacija s primjerima.

Usput, sama ideja sintaktičkih datoteka proizašla je iz jednog komentara na LOR-u, na čemu se zahvaljujemo re2c 4.0the_coder.

U verziju su uključene mnoge druge promjene za pojednostavljenje korisničkog sučelja, poboljšanje rada s grupama podudaranja (capturing groups), kao i dodana je online okruženje za uređivanje i kompajliranje primjera: http://re2c.org/playground.

Izvor: linux.org.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster