Reedel, 2. augustil ilmus re2c uus versioon — vaba lexikaalanalüsaatorite generaator C ja C++ keeltele. Tuletame meelde, et re2c loodi 1993. aastal Peter Bambulis'i poolt katsetuslikuks generaatoriks, millel on väga kiire genereeritud kood ja ebatavaliselt paindlik kasutajaliides, mis võimaldab lihtsasti ja efektiivselt integreerida analüsaatorid olemasolevasse koodibaasi. Sellest ajast alates on projekt arenenud kogukonna toel ja jääb katsetuste ja uuringute kohaks formaalsete grammatikate ja lõppautomaatide valdkonnas.
Versiooni 1.2 peamised uuendused:
On lisatud uus (lihtsustatud) viis sissekande lõppemise kontrollimiseks
(ingl. k. "EOF rule").
Selleks on lisatud konfiguratsioon re2c:eof,
mis võimaldab valida lõpp-sümboli,
ja eriline reegel $, mis aktiveerub, kui lexer
on edukalt jõudnud sissekande lõppu.
Ajalooliselt pakub re2c mitmeid viise sissekande lõpu kontrollimiseks,
mille efektiivsus ja lihtsus varieerub.
rakendused. Uus meetod on loodud koodi kirjutamise lihtsustamiseks, samal ajal
jäädes efektiivseks ja laialdaselt kasutatavaks. Vanad meetodid
jätkuvalt toimivad ja võivad teatud juhtudel olla eelistatud.Lisatud on võime lisada väliseid faile direktiivi abil
/*!include:re2c "file.re" */, где file.re
see on lisatava faili nimi. Re2c otsib faile lisatava faili kataloogist,
ning ka -I valiku abil määratud teede loendist.
Lisatud failid võivad sisaldada teisi faile.
Re2c pakub „standardsed” faile kataloogis include/
projektis — eeldatakse, et seal kogutakse kasulikke määratlusi
regulaarkatkedest, midagi sarnast standardraamatukogule.
Praegu on nõudluse tõttu lisatud üks fail Unicode'i kategooriate määratlemiseks.Lisatud on võimalus genereerida päisefailid juhusliku
sisaldusega -t —type-header (või vastavad
konfiguratsioonid) ja uusi direktiive /*!header:re2c:on*/ ja
/*!header:re2c:off*/. Это может быть полезно в случаях,
kui re2c peab genereerima mängude, struktuuride ja makrode määratlusi,
mida kasutatakse teistes tõlkeüksustes.Re2c mõistab nüüd UTF8-kripte ja sümbolite klasse regulaarkatkestetes.
Vaikimisi parseerib re2c väljendeid nagu "∀x ∃y".
järjestus 1-bitiste ASCII sümbolitega e2 88 80 78 20 e2 88 83 79
(heksakoodid), ja kasutajad peavad manuaalselt Unicode sümboleid escapedama:
"u2200x u2203y". See on paljudele kasutajatele väga ebamugav ja ootamatu.
Kasutajate sõnul (mida tõestavad pidevad bug-report'id). Seetõttu
re2c pakub võimalust —input-encoding ,
mis võimaldab muuta käitumist ja parseerida "∀x ∃y" kui
2200 78 20 2203 79.Re2c võimaldab nüüd kasutada tavalisi re2c plokke režiimis -r —reuse.
See on mugav, kui sisendfail sisaldab palju plokke, ja ainult osa neist
vajab taaskasutamist.Saab määrata hoiatuste ja veateadete formaadi
uue võimaluse —location-format kaudu. GNU formaat kuvatakse
nagu filename:line:column:, ja MSVC formaat — nagu filename(line,column).
See funktsioon võib olla kasulik IDE kasutajatele.
Samuti on lisatud võimalus —verbose, mis väljastab lühikese võiduka teadete eduka tulemuse korral.On täiustatud 'kompatibiliteedi' režiimi flexiga — parandatud mõned parsimise vead ja
vale operaatorite prioriteet harvadel juhtudel.
Ajaloo kohaselt võimaldab -F —flex-support kirjutada koodi
kombineeritult flex- ja re2c-stiilis, mis teeb süntaktilise analüüsi veidi raskemaks.
Flexi ühilduvusrežiimi kasutatakse uues koodis harva,
kuid re2c jätkab selle toetamist tagurpidiseks ühilduvuseks.Sümboolsed klasside lahutuse operaator / rakendatakse nüüd
enne kodeerimise lahti harutamist, mis võimaldab seda kasutada rohkemates olukordades,
kui kasutatakse muutuvapikkusega sümbolikodeeringut (näiteks UTF8).Väljundfail luuakse nüüd aatomiliselt: re2c loob esmalt ajutise faili
ja kirjutab sinna tulemuse, ning seejärel nimetab ajutise faili väljundfailiks
ühe toiminguga.Dokumentatsiooni on täiendatud ja ümber kirjutatud; eelkõige on lisatud uusi
ja sisendi lõpu kontrollimise meetodite kohta.
Uus dokumentatsioon on kogutud
kõikehõlmavaks ühekorsuseks manuaaliks
näidetega (samad algallikad kuvatakse nii manpage'is kui ka veebidokumentatsioonis).
On tehtud nõrku katseid parandada veebisaidi loetavust telefonides.Arendajate vaatenurgast on re2c saanud täiustatud testimise süsteemi
Debug-kood on nüüd release-ehitustes välja lülitatud ja
seda saab aktiveerida configure-valiku kaudu —enable-debug.
See väljalaskmine võttis kaua aega — peaaegu terve aasta.
Enamik ajast, nagu alati, kulus teoreetilise aluse väljatöötamisele ja kirjutamisele
artikkel „Efficient POSIX Submatch Extraction on NFA“.
Artiklis kirjeldatud algoritmid on rakendatud katsetusraamatukogus libre2c
(raamatukogude ja benchmarkide ehitamine on vaikimisi välja lülitatud ja aktiveeritakse configure-valikuga
—enable-libs). Raamatukogu ei ole mõeldud käimasolevate projektide konkurendiks,
näiteks RE2, vaid teaduslikuks platvormiks uute algoritmide väljatöötamiseks
(mida saab hiljem kasutada re2c-s või muudes projektides).
See on ka mugav testimise, benchmarkide ja sidemete loomiseks teistele keelele.
Tänud re2c arendajatelt kõigile, kes aitasid selle versiooni ellu viia,
ja tervikuna kogukonnale ideede, bugi raportite, patchide, boonusvaimu jne eest ;]
Allikas: linux.org.ru
