vĂ€ljalase , vaba lexika analĂŒsaatorite generaator C ja C++ keeltele. Tuletame meelde, et re2c kirjutati 1993. aastal Peter Bambulis'i poolt kui eksperimentaalne generaator vĂ€ga kiiretele lexika analĂŒsaatoritele, mis erineb teistest generaatoritest genereeritud koodi kiirusest ja ebatavalisest paindlikust kasutajaliidesest, mis vĂ”imaldab analĂŒsaatorite hĂ”lpsat ja tĂ”husat integreerimist olemasolevasse koodibaasi. Sellest ajast peale on projekt arenenud kogukonna toel ja jĂ€tkab katsetamise ja uurimise platvormina formaalsete grammatikate ja lĂ”plike automaatide valdkonnas.
VÀljaande ettevalmistamine vÔttis peaaegu aasta. Enamik ajast, nagu ikka, kulus teoreetilise aluse vÀljatöötamisele ja artikli kirjutamisele
artikkel â«.
Artiklis kirjeldatud algoritmid on rakendatud katsetusraamatukogus libre2c
(raamatukogu ja jĂ”udluse testimine on vaikimisi vĂ€lja lĂŒlitatud ja aktiveeritakse configure valiku ââenable-libsâ kaudu). Teek ei ole mĂ”eldud konkurendiks olemasolevatele projektidele, nagu RE2, vaid kui teadusuuringute platvorm uute arendamiseks.
algoritmid (mida saab hiljem kasutada re2c-s vÔi teistes projektides). See on ka mugav testimise, sooritusvÔime mÔÔtmise ja muude keeltele sidumiste loomise seisukohalt.
Re2c 1.2 versiooni peamised uuendused:
- Lisatud on uus lihtsustatud viis sisendi lÔpu (EOF reegel) kontrollimiseks. 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' */â, kus 'file.re' on kaasatud faili nimi. Re2c otsib faile kaasava faili kataloogist,
ning ka ' -I' opsiooniga 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
sisuga, mis on saadud valikute ' -t âtype-header' (vĂ”i vastavate
konfiguratsioonide) ja uute direktiivide '/*!header:re2c:on*/' ja
'/*!header:re2c:off*/' abil. See vÔib olla kasulik olukordades,
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 parsib re2c vĂ€ljendeid nagu 'âx ây' kui
jĂ€rjestikuseid 1-bitiseid ASCII sĂŒmboleid 'e2 88 80 78 20 e2 88 83 79'
(heksakoodid), ja kasutajad peavad manuaalselt Unicode sĂŒmboleid escapedama:
'\\u2200x \\u2203y'. See on paljude jaoks vÀga ebamugav ja ootamatu.
Kasutajate sÔnul (mida tÔestavad pidevad bug-report'id). SeetÔttu
Re2c pakub valikut 'âinput-encoding {ascii | utf8}',
mis vĂ”imaldab muuta kĂ€itumist ja parseerida 'âx ây' kui
'2200 78 20 2203 79'. - Re2c vĂ”imaldab nĂŒĂŒd kasutada tavalisi re2c-blokke 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 valiku ââlocation-format {gnu | msvc}â abil. GNU formaat kuvatakse
nagu âfailinimi:real:veerg:â, MSVC formaat aga nagu âfailinimi(reala, veerg)â.
See funktsioon vÔib olla kasulik IDE kasutajatele.
Samuti on lisatud valik ââverboseâ, mis kuvab lĂŒhikese vĂ”idukĂ€igu teate eduka tulemuse korral. - Koos on viidud kokku sobivusetapp flexiga â parandatud on mĂ”ned analĂŒĂŒsi vead ja
vale operaatorite prioriteet harvadel juhtudel.
Ajalooliselt vĂ”imaldab valik â-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ĂŒmboolsete klasside lahutamise operaator â/â kehtib 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
peatĂŒkkide kohta
ja .
Uus dokumentatsioon on kogutud
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
saab lubada configure-valikuga ââenable-debugâ.
Allikas: opennet.ru
