Re2c lexer generator 1.2 väljalase

võttis aset vabastama re2c, tasuta leksikaalanalüsaatori generaator C ja C++ keelte jaoks. Tuletame meelde, et re2c kirjutas 1993. aastal Peter Bambulis kui väga kiirete leksikaalanalüsaatorite eksperimentaalne generaator, mis erineb teistest generaatoritest genereeritava koodi kiiruse ja ebatavaliselt paindliku kasutajaliidese poolest, mis võimaldab analüsaatoreid lihtsalt ja tõhusalt olemasolevasse koodi integreerida. alus. Sellest ajast alates on kogukond projekti välja töötanud ja see on jätkuvalt platvorm formaalsete grammatikate ja lõplike olekumasinate valdkonnas eksperimentidele ja uuringutele.

Väljaande ettevalmistamine kestis peaaegu terve aasta. Suurem osa ajast, nagu ikka, kulus teoreetilise raamistiku väljatöötamisele ja kirjutamisele
artiklid "Tõhus POSIXi alammatšide ekstraheerimine NFA-s"
Artiklis kirjeldatud algoritmid on rakendatud eksperimentaalses raamatukogus libre2c
(teegi koostamine ja jõudlustestid on vaikimisi keelatud ja see on lubatud konfigureerimisvalikuga "—enable-libs"). Raamatukogu ei ole mõeldud konkurendiks olemasolevatele projektidele nagu RE2, vaid uurimisplatvormina uute arendamiseks
algoritmid (mida saab seejärel kasutada re2c-s või muudes projektides). See on mugav ka testimise, jõudluse mõõtmise ja teiste keelte sidumiste loomise seisukohalt.

Peamised uuendused versioonis re2c 1.2:

  • Lisatud on uus lihtsustatud meetod sisendandmete lõpu kontrollimiseks (“EOF reegel”). Selleks on lisatud konfiguratsioon “re2c:eof”,
    võimaldab valida terminali märgi,
    ja erireegel “$”, mis käivitub, kui lekser
    jõudis edukalt sisendandmete lõppu.
    Ajalooliselt pakub re2c valikut mitme kinnitusmeetodi vahel
    sisendite lõpp, mis erinevad piirangute, tõhususe ja lihtsuse poolest
    rakendusi. Uus meetod on loodud koodi kirjutamise lihtsustamiseks
    jäädes samas tõhusaks ja laialdaselt rakendatavaks. Vanad viisid
    ikka töötavad ja võib mõnel juhul eelistada.

  • Lisatud võimalus lisada väliseid faile, kasutades käskkirja
    "/*!include:re2c "file.re" */", kus "file.re" on kaasatava faili nimi. Re2c otsib faile, sealhulgas failikataloogist,
    samuti suvandi "-I" abil määratud teede loendis.
    Kaasatud failid võivad sisaldada muid faile.
    Re2c pakub "standardseid" faile kataloogis "include/".
    projekt – sinna koguneb eeldatavasti kasulikke definitsioone
    regulaaravaldised, umbes nagu tavaline raamatukogu.
    Seni on töötajate soovil lisatud üks fail Unicode'i kategooriate definitsioonidega.

  • Lisatud võimalus genereerida suvalise päisefaile
    sisu kasutades suvandeid "-t --type-header" (või sobivat
    konfiguratsioonid) ja uued direktiivid "/*!header:re2c:on*/" ja
    "/*!header:re2c:off*/". See võib olla kasulik juhtudel, kui
    kui re2c peab genereerima muutujate, struktuuride ja makrode määratlusi,
    kasutatakse teistes tõlkeüksustes.

  • Re2c mõistab nüüd regulaaravaldistes UTF8-literaale ja märgiklasse.
    Vaikimisi analüüsib re2c selliseid avaldisi nagu "∀x ∃y" kujul
    1-bitiste ASCII-märkide jada "e2 88 80 78 20 e2 88 83 79"
    (kuueteistkümnendkoodid) ja kasutajad peavad Unicode'i märgid käsitsi välja jätma:
    "\\u2200x \\u2203y." See on paljude jaoks väga ebamugav ja ootamatu
    kasutajad (mida tõendavad pidevad veateated). Nii nüüd
    re2c pakub valikut "--input-encoding {ascii | utf8}",
    mis võimaldab muuta käitumist ja sõeluda “∀x ∃y” kui
    "2200 78 20 2203 79."

  • Re2c võimaldab nüüd tavalisi re2c plokke kasutada režiimis "-r --reuse".
    See on mugav, kui sisendfail sisaldab palju plokke ja ainult mõnda neist
    tuleb uuesti kasutada.

  • Nüüd saate määrata hoiatuste ja veateadete vormingu
    kasutades uut valikut "--location-format {gnu | msvc}". Kuvatakse GNU vorming
    kui "failinimi:rida: veerg:" ja MSVC-vormingus "failinimi(rida, veerg)".
    See funktsioon võib olla kasulik IDE-sõpradele.
    Lisatud on ka valik "--verbose", mis edu korral kuvab lühikese võiduteate.

  • Flexi ühilduvusrežiimi on täiustatud - mõned sõelumisvead on parandatud ja
    harvadel juhtudel vale operaatori prioriteetsus.
    Ajalooliselt võimaldas suvand "-F --flex-support" teil koodi kirjutada
    segatud flex stiilis ja re2c stiilis, mis muudab sõelumise pisut keeruliseks.
    Flexi ühilduvusrežiimi kasutatakse uues koodis harva,
    kuid re2c toetab seda tagasiühilduvuse tagamiseks jätkuvalt.

  • Nüüd kehtib märgiklassi lahutamise operaator "/".
    enne kodeeringu laiendamist, mis võimaldab seda kasutada suuremal arvul juhtudel,
    kui kasutatakse muutuva märgi pikkusega kodeeringut (näiteks UTF8).

  • Väljundfail luuakse nüüd atomaarselt: re2c loob kõigepealt ajutise faili
    ja kirjutab sellesse tulemuse ning nimetab seejärel ajutise faili väljundiks ümber
    üks operatsioon.

  • Dokumentatsioon viidi lõpule ja kirjutati ümber; eelkõige lisandus uusi
    peatükid umbes http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и sisendandmete lõpu kontrollimise viiside kohta.
    Uus dokumentatsioon kogutakse vormile
    põhjalik üheleheküljeline juhend
    koos näidetega (samad allikad on renderdatud juhendis ja veebidokumentatsioonis).
    Kehvad katsed saidi loetavust telefonides parandada on tehtud.

  • Arendajate vaatevinklist on re2c omandanud terviklikuma alamsüsteemi
    silumine Silumiskood on nüüd väljalaskejärkudes ja versioonides keelatud
    saab lubada konfigureerimisvaliku "--enable-debug" abil.

Allikas: opennet.ru

Lisa kommentaar