LexikaalanalĂŒsaatorite generaatori re2c 1.2 vĂ€ljaanne

On toimunud vĂ€ljalase re2c, 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 „Efficient POSIX Submatch Extraction on NFA«.
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 http://re2c.org/manual/manual.html#buffer-refilling puhvri tĂ€itmine
    ja sisendi lÔpu kontrollimise meetodite kohta.
    Uus dokumentatsioon on kogutud
    kĂ”ikehĂ”lmava ĂŒhe lehe juhendi
    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

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster