Reede, 2. augustil, ilmus re2c - tasuta lexikaalanalyüsijate generaator C ja C++ keeltele. Tuletame meelde, et re2c kirjutati 1993. aastal Peter Bamboulis'e poolt eksperimentaalse generaatorina väga kiirete lexikaalanalyüsijate jaoks, millel on kiiruselt eristuv genereeritud kood ja erakordselt paindlik kasutajaliides, mis võimaldab analüsaatorite hõlpsat ja tõhusat integreerimist olemasolevasse koodibaasi. Alates sellest ajast on projekt arenenud kogukonna toel ja jääb endiselt eksperimentide ja uurimistööde keskpunktiks formaalsete grammatikate ja lõplike automatide valdkonnas.
Versiooni 1.2 peamised uuendused:
Lisatud uus (lihtsustatud) viis sisendi lõpu kontrollimiseks
(ingl. k. «EOF rule»).
Selleks on lisatud konfiguratsioon re2c:eof,
mis võimaldab valida terminali sümboli,
ja spetsiaalne reegel $, mis aktiveerub, kui lexer
on edukalt jõudnud sisendi lõppu.
Ajalooliselt on re2c pakkunud mitmeid viise sisendi lõpu kontrollimiseks,
mis varieeruvad oma piirangute, efektiivsuse ja lihtsuse poolest
rakendamisel. Uus viis on mõeldud koodi kirjutamise lihtsustamiseks, samas
püsides efektiivne ja laialdaselt kohaldatav. Vanad viisid
töötavad endiselt ja võivad olla eelistatud teatud olukordades.Lisatud võimalus lisada väliseid faile direktiivi abil,
/*!include:re2c "file.re" */, где file.re
see on lisatava faili nimi. Re2c otsib faile lisatud faili kaustas,
ning ka teede nimekirjast, mis on määratud valiku -I abil.
Lisatud failid võivad sisaldada teisi faile.
Re2c pakub "standardsed" faile kaustas include/
projektis - eeldatakse, et seal kogunevad kasulikud määratlemised
regulaarsest väljendist, midagi nagu standardteek.
Praeguseks on tööinimeste soovide tõttu lisatud üks fail Unicode'i kategooriate määratlemisega.Lisatud võimalus genereerida pealkirjafailid suvalise
sisaldusega, kasutades valikute -t —type-header (või vastavate
konfiguratsioonide) ja uute direktiivide /*!header:re2c:on*/ ja
/*!header:re2c:off*/. Это может быть полезно в случаях,
kui re2c peab genereerima muutujate, struktuuride ja makrode määratlemisi,
mida kasutatakse teistes tõlkeüksustes.Re2c mõistab nüüd UTF8-literale ja klasside sümboleid regulaarsetes väljendites.
Vaikimisi, re2c analüüsib väljendeid nagu "∀x ∃y" kui.
1-bit ASCII-märkide järjestus e2 88 80 78 20 e2 88 83 79
(hex-koodid), ja kasutajad peavad Unicode-märke käsitsi ekraanima:
"u2200x u2203y". See on paljudele kasutajatele väga ebamugav ja ootamatu
(millest annavad tunnistust pidevad vearaportid). Seetõttu nüüd
re2c pakub võimalust —input-encoding ,
mis võimaldab muuta käitumist ja analüüsida "∀x ∃y" kui
2200 78 20 2203 79.Re2c lubab nüüd kasutada tavalisi re2c-blokke režiimis -r —reuse.
See on mugav, kui sisendfail sisaldab palju blokke, ja ainult osa neist
vajab korduvat kasutamist.Ilmus võimalus määrata hoiatuste ja vigade teade formaat
uue valiku —location-format abil. GNU-formaat kuvatakse
kuuna filename:line:column:, ja MSVC-formaat kuuna filename(line,column).
See funktsioon võib olla kasulik IDE-harrastajatele.
Lisatud on ka valik —verbose, mis väljastab lühikese eduka sõnumi juhul, kui asi õnnestub.Compatibility režiimi flex’iga on täiendatud – parandatud on mõned analüüsi vead ja
vale operaatorite prioriteet harvadel juhtudel.
Ajalooliselt võimalus -F —flex-support võimaldab kirjutada koodi
segatult flexi ja re2c stiilis, mis veidi keerustab süntaktilist analüüsi.
Flex'i ühilduvuse režiimi kasutatakse uues koodis harva,
aga re2c toetab seda endiselt tagurpidi ühilduvuse huvides.Sümbolite klasside lahutamise operaator / rakendatakse nüüd
enne kodeeringu lahtikumaramist, mis võimaldab seda rakendada suuremas arvus juhtudel,
kui kasutatakse erineva pikkusega sümbolite kodeeringut (näiteks UTF8).Väljundfail luuakse nüüd aatomiliselt: re2c loob esmalt ajutise faili
ja kirjutab sinna tulemuse, seejärel nimetab ajutise faili väljundfailiks
ühe operatsiooni käigus.Dokumenti on täiustatud ja ümber kirjutatud; eelkõige on lisatud uusi
ja sisendandmete lõpu kontrollimise meetodite kohta.
Uus dokumentatsioon on kokku pandud
kattest ühe lehe manuaaliks
näidistega (samad allikad kuvatakse manpage’is ja veebidokumendina).
Tehtud on nõrgad katsed parandada veebilehe loetavust telefonides.Arendajate vaatenurgast on re2c saanud täiendava ja täielikuma silumise alamsüsteemi.
Silumise kood on nüüd välja lülitatud vabastatud kogudes ja
saab olla sisse lülitatud configure-valiku —enable-debug abil.
See väljalase võttis kaua aega — peaaegu aasta.
Enamiku ajast, nagu alati, kulus teoreetilise baasi arendamisele ja kirjutamisele
artikleid «Efficient POSIX Submatch Extraction on NFA».
Artiklis kirjeldatud algoritmid on rakendatud eksperimenteerivas raamatukogus libre2c
(raamatukogu ja benchmarkide kogumine on vaikimisi keelatud ja lubatakse configure-valiku abil
—enable-libs). Raamatukogu ei ole mõeldud konkurendiks olemasolevatele
projektidele nagu RE2, vaid uurimisplatvorm uute arendamiseks
algoritmide jaoks (mida saab hiljem kasutada re2c-s või muudes projektides).
Samuti on see mugav testimise, benchmarkide ja sidemete loomiseks teistele keeltele.
Täname re2c arendajatelt kõiki, kes aitasid selle väljalaske teoks teha,
ja üldiselt kogukonna jaoks ideede, veahalduste, patšide, võitlusvaimu jne. eest ;]
Allikas: linux.org.ru
