re2c 4.0

V torek, 19. novembra, je bila predstavljena izdaja re2c – generatorja leksikalnih analizatorjev (to je tudi prevajalnik regularnih izrazov v kodo v ciljnem programskem jeziku). re2c se specializira na generacijo hitrih in enostavno vgrajivih lekserskih analitzorjev. Od bolj znanega analoga flex se razlikuje po fleksibilnem vmesniku, generaciji optimiziranih netabelaričnih lekserskih analitzorjev in podpori za izpeljave (submatch extraction) na podlagi stohastičnih končnih avtomatov z oznakami (TDFA). re2c se uporablja v projektih, kjer je hitrost delovanja lekserskega analitzorja pomembna, na primer v Ninja in v PHP-ju.

V izdaji 4.0 je bila temeljito predelana podpora za generacijo kode, kar je omogočilo dodajanje podpore za osem novih jezikov (D, Haskell, Java, JavaScript, OCaml, Python, V, Zig) poleg že podprtih (C/C++, Go, Rust), prav tako pa je bil uveden splošen mehanizem za dodajanje novih jezikov prek konfiguracijskih datotek. Generator kode je odgovoren za translacijo že zgrajenega in optimiziranega končnega avtomata v kodo, torej je njegova naloga izbrati primerne nadzorne strukture za ciljni jezik, tipe podatkov, splošni model programa itd. Prej je bila vsa ta logika del izvorne kode re2c, in da bi jo spremenili ali dodali nov jezik, je bilo potrebno popraviti izvorno kodo in ponovno sestaviti re2c. Takšna popravila niso bila sprejeta v glavni repozitorij brez implementacije standardnega nabora primerov in testov, kar je dodatno otežilo celoten postopek. Zdaj je vse to logiko preneseno v sintaktične datoteke – tekstovne konfiguracijske datoteke, ki jih lahko zagotovi uporabnik (privzeto re2c uporablja standardne). Izvorna koda re2c je popolnoma osvobojena podrobnosti specifičnega jezika in se opira samo na sintaktično datoteko. Uporabnik lahko delno nadomesti obstoječo sintaktično datoteko ali napiše novo od začetka. Za vse uradno podprte jezike je na voljo popolna dokumentacija s primeri.

Mimogrede, sama ideja sintaktičnih datotek se je pojavila zaradi enega komentarja na LOR-u, za kar se zahvaljujemo re2c 4.0the_coder.

V izdaji je bilo veliko drugih sprememb za poenostavitev uporabniškega vmesnika, izboljšanje dela z izbirnimi skupinami (capturing groups), prav tako je bila dodana spletna okolja za urejanje in kompilacijo primerov: http://re2c.org/playground.

Izvor: linux.org.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster