Lexikaalsete analüsaatorite generaatori re2c 1.2 väljaanne

Toimus vabastus re2c, vaba leksikaalsete analüsaatorite generaator C ja C++ keelte jaoks. Tuletame meelde, et re2c kirjutati 1993. aastal Peter Bambulis’i poolt eksperimentaalse generaatorina väga kiirete leksikaalsete analüsaatorite jaoks, mis erineb teistest generaatoritest genereeritud koodi kiirus ja ebatavaliselt paindlik kasutajaliides, mis võimaldab hõlpsasti ja tõhusalt integreerida analüsaatoreid olemasolevasse koodibaasi. Sellest ajast alates on projekt arenenud kogukonna abiga ja jätkab olema eksperimentide ja uuringute platvorm formaalsete grammatikate ja lõplike automatide valdkonnas.

Väljalaske ettevalmistamine võttis peaaegu aasta. Enamik ajast, nagu alati, kulus teoreetilise baasi väljatöötamisele ja kirjutamisele
artiklit "Efficient POSIX Submatch Extraction on NFA«.
Artiklis kirjeldatud algoritmid on rakendatud eksperimenteerivas raamatukogus libre2c
(raamatukogu ja jõudluse testimise kogumine on vaikimisi keelatud ja lülitatakse sisse configure valikuga "--enable-libs"). Raamatukogu ei ole mõeldud konkurendiks juba olemasolevatele projektidele, nagu RE2, vaid uurimisplatvormiks uute
algoritmide väljatöötamiseks (mida saab seejärel kasutada re2c-s või muudes projektides). Samuti on see mugav teste läbiviimiseks, jõudluse mõõtmiseks ja sidemete loomiseks teistele keelele.

Re2c 1.2 versiooni peamised uuendused:

  • Lisatud uus lihtsustatud viis sisendandmete lõpu kontrollimiseks ("EOF rule"). Selle jaoks on lisatud konfigureerimine "re2c:eof",
    mis võimaldab valida terminali sümboli,
    ja eriline reegel "$", mis aktiveerub, kui leksikaator
    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" */", kus "file.re" on kaasatud faili nimi. Re2c otsib faile kaasava faili kataloogist,
    ning ka teede loendist, mis on määratud valiku "-I" abil.
    Lisatud failid võivad sisaldada teisi faile.
    Re2c pakub "standardsed" faile kataloogis "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
    sisu kaudu valikute "-t --type-header" (või vastavate
    konfiguratsioonide) ja uute direktiivide "/*!header:re2c:on*/" ja
    "/*!header:re2c:off*/". See võib olla kasulik juhtudel,
    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 analüüsib re2c väljendeid nagu "∀x ∃y" kui
    järjestust 1-bitiste ASCII-märkide "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 väga ebamugav ja üllatav
    (millest annavad tunnistust pidevad vearaportid). Seetõttu nüüd
    Re2c pakub valikut "--input-encoding {ascii | utf8}",
    mis võimaldab muuta käitumist ja analüüsida "∀x ∃y" kui
    "2200 78 20 2203 79".
  • Re2c võimaldab nüüd kasutada tavalisi re2c blokeeringuid 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
    koos uue valikuga "--location-format {gnu | msvc}". GNU formaat kuvatakse
    nagu «filename:line:column:», ja MSVC-formaat nagu «filename(line,column)».
    See funktsioon võib olla kasulik IDE-harrastajatele.
    Lisatud on ka valik «—verbose», mis prindib eduka tulemuse korral lühikese võidukäigu sõnumi.
  • Töötati välja „ühilduvuse” režiim flexiga — parandatud on mitmeid parsimise vigu ja
    vale operaatorite prioriteet harvadel juhtudel.
    Ajalooliselt võimaldab valik «-F —flex-suppor» 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ümboolsete 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
    peatükid, mis käsitlevad http://re2c.org/manual/manual.html#buffer-refilling puhvri täitmine
    ja sisendandmete lõpu kontrollimise meetodite kohta.
    Uus dokumentatsioon on kokku pandud
    kõikehõlmavat ühekülgset juhendit
    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
    võib aktiveerida configure-valikuga «—enable-debug».

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster