re2c 4.0

Teisipäeval, 19. novembril esitleti väljalaset re2c – leksikaalsete analüsaatorite generaator (ka regulaaravaldiste kompilaator sihtkeele programmikoodiks). re2c keskendub kiirete ja hõlpsasti sisestatavate leksikonite genereerimisele. See erineb tuntumast analoogist flex paindliku liidese, optimeeritud mitte-tabelarvutuste leksikonite genereerimise ja deterministlike lõppautomaatide (DAF) baasil toimuva alamosade (submatch extraction) toe tõttu (TDFA). re2c-d kasutatakse projektides, kus on oluline leksikoni töökiirus, näiteks Ninja ja PHP.

Versioonis 4.0 on koodigeneratsiooni alamsüsteem olulisel määral ümber kujundatud, mis võimaldas lisada toetuse kaheksale uuele keelele (D, Haskell, Java, JavaScript, OCaml, Python, V, Zig) koos juba toetatud keeltega (C/C++, Go, Rust), samuti üldise mehhanismi uute keelte lisamiseks konfiguratsioonifailide kaudu. Koodigeneratsioon vastutab juba ülesehitatud ja optimeeritud lõppautomaatide tõlkimise eest koodi, st selle ülesanne on valida sihtkeele jaoks sobivad juhtimisstruktuurid, andmetüübid, programmi üldine mudel jne. Varem kuulus kogu see loogika re2c algkoodi osaks, ja selle muutmiseks või uue keele lisamiseks tuli algkoodi patchida ja re2c uuesti üles ehitada. Sellised patšid ei olnud peamises hoidlas aktsepteeritud ilma standardkomplekti näidete ja testide rakendamiseta, mis veelgi keerulisemaks muutsid kogu protsessi. Nüüd on kogu see loogika viidud süntaksifailidesse – tekstipõhised konfiguratsioonifailid, mida võib esitada kasutaja (omaette re2c kasutab standardseid). re2c algkood on täielikult vaba konkreetse keele detailidest ja toetub ainult süntaksifailile. Kasutaja võib osaliselt üle kirjutada olemasoleva süntaksifaili või kirjutada uue nullist. Kõigi ametlikult toetatud keelte jaoks on täielik dokumentatsioon näidetega.

Muide, süntaksifailide idee tekkis tänu ühele kommentaarile LOR-is, mille eest aitäh re2c 4.0the_coder.

Väljalaskesse on lisatud palju muid muudatusi, et lihtsustada kasutajaliidest, parandada töötlust kõnelemisgruppide (capturing groups) osas, samuti on lisatud veebi keskkond näidete redigeerimiseks ja kompileerimiseks: http://re2c.org/playground.

Allikas: linux.org.ru

Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster