NgoLwesihlanu, Agasti 2, ukukhishwa kwe-re2c, ijeneretha yamahhala yabahlaziyi besichazamazwi bezilimi ze-C kanye ne-C ++, yakhululwa. I-Re2c yabhalwa ngo-1993 ngu-Peter Bamboulis njengejeneretha yokuhlola yabahlaziyi besichazamazwi abashesha kakhulu, ehlukaniswa kwamanye amajeneretha ngesivinini sekhodi ekhiqiziwe kanye nesixhumi esibonakalayo somsebenzisi esivumelana nezimo ngokungavamile esivumela abahlaziyi ukuthi bashumekwe kalula nangempumelelo kusisekelo sekhodi esikhona. Kusukela lapho, le phrojekthi iye yathuthukiswa umphakathi futhi iyaqhubeka nokuba yinkundla yokuhlola nokucwaninga emkhakheni wohlelo lolimi oluhlelekile kanye nemishini yombuso elinganiselwe.

Okuqanjiwe okuyinhloko kunguqulo 1.2:

  • Kwengezwe indlela entsha (eyenziwe lula) yokuhlola isiphetho sedatha yokufaka
    (IsiNgisi β€œEOF rule”).
    Kulokhu, ukucushwa kwe-re2c:eof kungeziwe,
    ikuvumela ukuthi ukhethe uhlamvu lwetheminali,
    kanye nomthetho okhethekile we-$ ovutha uma i-lexer
    ufinyelele ngempumelelo ekupheleni kwedatha yokufaka.
    Ngokomlando, i-re2c inikeza ukukhetha kwezindlela ezimbalwa zokuqinisekisa
    ukuphela kokufakiwe okuhluka ngomkhawulo, ukusebenza kahle kanye nobulula
    izicelo. Indlela entsha yakhelwe ukwenza lula ukubhala ikhodi, kuyilapho
    ngenkathi isebenza ngempumelelo futhi isebenza kabanzi. Izindlela zakudala
    isasebenza futhi ingakhethwa kwezinye izimo.

  • Kwengezwe amandla okufaka amafayela angaphandle kusetshenziswa isiyalezo
    /*!faka:re2c "file.re" */ lapho ifayela.re
    leli igama lefayela elifakiwe. I-Re2c ibheka amafayela ohlwini lwemibhalo lwefayela,
    kanye nasohlwini lwezindlela ezishiwo kusetshenziswa inketho ethi -I.
    Amafayela afakiwe angase ahlanganise namanye amafayela.
    I-Re2c ihlinzeka ngamafayela "ajwayelekile" ku-include/directory
    iphrojekthi - kulindeleke ukuthi izincazelo eziwusizo ziqongelele lapho
    izinkulumo ezivamile, into efana nomtapo wezincwadi ojwayelekile.
    Kuze kube manje, ngesicelo sabasebenzi, ifayela elilodwa elinezincazelo zezigaba ze-Unicode lingeziwe.

  • Kwengezwe ikhono lokukhiqiza amafayela anhlokweni ngokunganaki
    okuqukethwe usebenzisa i- -t --type-header izinketho (noma ezifanele
    ukucupha) neziqondiso ezintsha /*!isihloko:re2c:on*/ kanye
    /*!isihloko:re2c:off*/. Lokhu kungase kube usizo ezimweni lapho
    lapho i-re2c idinga ukukhiqiza izincazelo zokuguquguquka, izakhiwo kanye nama-macros,
    esetshenziswa kwamanye amayunithi okuhumusha.

  • I-Re2c manje iyaqonda i-UTF8 literals kanye nezigaba zezinhlamvu ngezinkulumo ezivamile.
    Ngokuzenzakalelayo, i-re2c idlulisa izinkulumo ezifana nokuthi "βˆ€x βˆƒy" njenge.
    ukulandelana kwezinhlamvu ze-1-bit ASCII e2 88 80 78 20 e2 88 83 79
    (amakhodi we-hex), futhi abasebenzisi kufanele babaleke ngesandla izinhlamvu ze-Unicode:
    "u2200x u2203y". Lokhu akulula kakhulu futhi akulindelwe kwabaningi
    abasebenzisi (njengoba kufakazelwa imibiko yesiphazamisi engashintshi). Ngakho manje
    i-re2c inikeza inketho ye--input-encoding ,
    okukuvumela ukuthi uguqule ukuziphatha futhi uhlukanise okuthi "βˆ€x βˆƒy" njenge
    2200 78 20 2203 79.

  • I-Re2c manje ivumela ukusetshenziswa kwamabhulokhi we-re2c avamile kumodi -r --reuse mode.
    Lokhu kulula uma ifayela lokufaka liqukethe amabhlogo amaningi futhi amanye awo kuphela
    idinga ukusetshenziswa kabusha.

  • Manje ungasetha ifomethi yezixwayiso nemilayezo yephutha
    usebenzisa inketho entsha --location-format . Ifomethi ye-GNU iyaboniswa
    njengegama lefayela:umugqa:ikholomu:, kanye nefomethi ye-MSVC njengegama lefayela(umugqa,ikholomu).
    Lesi sici singase sibe usizo kubathandi be-IDE.
    Inketho ethi --verbose nayo yengeziwe, ephrinta umlayezo omfushane wokunqoba uma uphumelele.

  • Imodi "yokuhambisana" ene-flex isithuthukisiwe - amanye amaphutha okuhlaziya aselungisiwe futhi
    ukulandelwa komsebenzisi okungalungile ezimweni ezingavamile.
    Ngokomlando, inketho -F --flex-support ikuvumele ukuthi ubhale ikhodi
    kuxutshwe ngesitayela esiguqukayo nesitayela se-re2c, okwenza ukuhlukanisa kube nzima.
    Imodi yokuhambisana ye-Flex ayivamisile ukusetshenziswa kukhodi entsha,
    kodwa i-re2c iyaqhubeka nokuyisekela ukuze ihambisane nemuva.

  • U-opharetha wokususa wesigaba sohlamvu / manje uyasebenza
    ngaphambi kokwandisa umbhalo wekhodi, okuvumela ukuthi usetshenziswe enanini elikhulu lamacala,
    uma kusetshenziswa umbhalo wekhodi wobude bezinhlamvu eziguquguqukayo (isibonelo i-UTF8).

  • Ifayela lokuphumayo manje selidalwe nge-athomu: i-re2c idala ifayela lesikhashana kuqala
    bese ibhala umphumela kuyo, bese iqamba kabusha ifayela lesikhashana kokuphumayo
    ukuhlinzwa okukodwa.

  • Amadokhumenti aqedwa futhi abhalwa kabusha; ikakhulukazi, kwengezwe ezintsha
    izahluko mayelana nokugcwalisa isigcinalwazi
    ΠΈ mayelana nezindlela zokubheka ukuphela kwedatha yokufaka.
    Amadokhumenti amasha aqoqwa efomini
    incwadi enemininingwane yekhasi elilodwa
    ngezibonelo (imithombo efanayo inikezwa ku-manpage nakumadokhumenti aku-inthanethi).
    Imizamo embi yenziwe yokuthuthukisa ukufundeka kwesayithi kumafoni.

  • Ngokombono wonjiniyela, i-re2c ithole uhlelo olungaphansi oluphelele kakhulu
    ukulungisa iphutha Ikhodi yokususa iphutha manje ikhutshaziwe ekwakhiweni kokukhishwa kanye
    inganikwa amandla kusetshenziswa inketho yokumisa --enable-debug.

Lokhu kukhululwa kwathatha isikhathi eside - cishe unyaka wonke.
Isikhathi esiningi, njengenjwayelo, besichithwa ekwakheni uhlaka lwetiyori nokubhala
izindatshana "I-POSIX Submatch Extraction esebenzayo ku-NFA".
Ama-algorithms achazwe esihlokweni asetshenziswa kulabhulali yokuhlola i-libre2c
(ukwakha umtapo wolwazi kanye nezimpawu zokuma kukhutshaziwe ngokuzenzakalelayo futhi kunikwe amandla inketho yokumisa
--vumela-libs). Umtapo wolwazi awuthathwa njengoqhudelana nekhona
amaphrojekthi afana ne-RE2, kodwa njengenkundla yocwaningo yokuthuthukiswa okusha
ama-algorithms (angasetshenziswa ku-re2c noma kwamanye amaphrojekthi).
Kuyafaneleka futhi ngokombono wokuhlola, amabhentshimakhi nokudala izibopho kwezinye izilimi.

Siyabonga kusukela konjiniyela be-re2c kuwo wonke umuntu osize lokhu kukhululwa kwenzeke,
kanye nomphakathi wonkana ngemibono, imibiko yeziphazamisi, iziqephu, isimilo, njll. ;]

Source: linux.org.ru

Engeza amazwana