re2c 1.2

Reedel, 2. augustil ilmus C- ja C++-keelte leksikaalanalüsaatorite tasuta generaator re2c. Tuletame meelde, et re2c kirjutas 1993. aastal Peter Bamboulis kui väga kiirete leksikaalanalüsaatorite eksperimentaalne generaator, mida eristab teistest generaatoritest genereeritava koodi kiirus ja ebatavaliselt paindlik kasutajaliides, mis võimaldab analüsaatoreid lihtsalt ja tõhusalt integreerida. olemasolev koodibaas. 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.

Peamised uuendused versioonis 1.2:

  • Lisatud on uus (lihtsustatud) viis sisendandmete lõpu kontrollimiseks
    (inglise keeles “EOF rule”).
    Selleks on lisatud konfiguratsioon re2c:eof,
    võimaldab valida terminali märgi,
    ja spetsiaalne $ reegel, mis vallandab, 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 fail.re
    see on kaasava 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 --input-encoding suvandit ,
    mis võimaldab muuta käitumist ja sõeluda "∀x ∃y" kui
    2200 78 20 2203 79.

  • Re2c lubab nüüd kasutada tavalisi re2c plokke 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 --location-format suvandit . Kuvatakse GNU vorming
    failinimi:rida:veerg: ja MSVC-vormingus failinimi (rida, veerg).
    See funktsioon võib olla kasulik IDE-sõpradele.
    Lisatud on ka --verbose variant, mis õnnestumise korral trükib lühikese võiduteate.

  • Flexi "ühilduvus" režiimi on täiustatud - parandatud on mõned sõelumisvead ja
    harvadel juhtudel vale operaatori prioriteetsus.
    Ajalooliselt võimaldas suvand -F --flex-support sul 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ükkides puhvri täitmise kohta
    и 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 konfigureerimisvalikuga --enable-debug.

See vabastamine võttis kaua aega - 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 ja võrdlusaluste koostamine on vaikimisi keelatud ja see on lubatud konfigureerimisvalikuga
--enable-libs). Raamatukogu ei ole mõeldud olemasoleva konkurendiks
projekte nagu RE2, vaid kui uurimisplatvormi uute väljatöötamiseks
algoritmid (mida saab seejärel kasutada re2c-s või muudes projektides).
See on mugav ka testimise, võrdlusnäitajate ja teiste keelte sidumise seisukohast.

Tänu re2c arendajatele kõigile, kes aitasid sellel väljalasel sündida,
ja kogukonnale üldiselt ideede, veateadete, paikade, moraali jms saamiseks. ;]

Allikas: linux.org.ru

Lisa kommentaar