Lachisanu, Ogasiti 2, kutulutsidwa kwa re2c, jenereta yaulere ya ma analyzer a lexical a zilankhulo za C ndi C ++, idatulutsidwa. Re2c inalembedwa mu 1993 ndi Peter Bamboulis monga jenereta yoyesera ya ma analyzer othamanga kwambiri, osiyanitsidwa ndi majenereta ena ndi liwiro la code yopangidwa ndi mawonekedwe osinthika modabwitsa omwe amalola osanthula kuti alowetsedwe mosavuta komanso moyenera mu code base yomwe ilipo. Kuyambira nthawi imeneyo, polojekitiyi yapangidwa ndi anthu ammudzi ndipo ikupitirizabe kukhala nsanja yoyesera ndi kufufuza pamagulu ovomerezeka a galamala ndi makina owerengeka a boma.

Zatsopano zazikulu mu mtundu 1.2:

  • Adawonjeza njira yatsopano (yosavuta) yowonera kutha kwa zomwe zalowetsedwa
    (Chingerezi "EOF rule").
    Pachifukwa ichi, re2c:eof kasinthidwe awonjezedwa,
    kumakupatsani mwayi wosankha mtundu wa terminal,
    ndi lamulo lapadera la $ lomwe limawotcha ngati lexer
    adafika kumapeto kwa zolowetsa.
    M'mbiri, re2c imapereka kusankha kwa njira zingapo zotsimikizira
    kutha kwa zolowa mosiyanasiyana mochepera, kuchita bwino komanso kuphweka
    mapulogalamu. Njira yatsopanoyi idapangidwa kuti ikhale yosavuta kulemba kachidindo, pomwe
    pamene ikugwira ntchito komanso yogwiritsidwa ntchito kwambiri. Njira zakale
    zimagwirabe ntchito ndipo zitha kukhala zokondedwa nthawi zina.

  • Adawonjezera kuthekera kophatikiza mafayilo akunja pogwiritsa ntchito malangizo
    /*!kuphatikizapo:re2c "file.re" */ kumene file.re
    ili ndi dzina la kuphatikiza fayilo. Re2c imayang'ana mafayilo mumafayilo kuphatikiza mafayilo,
    komanso pamndandanda wanjira zomwe zafotokozedwa pogwiritsa ntchito -I.
    Mafayilo ophatikizidwa angaphatikizepo mafayilo ena.
    Re2c imapereka mafayilo "okhazikika" muzophatikiza / chikwatu
    polojekiti - zikuyembekezeredwa kuti matanthauzidwe othandiza adzaunjikana pamenepo
    mawu okhazikika, ngati laibulale yokhazikika.
    Pakadali pano, pempho la ogwira ntchito, fayilo imodzi yokhala ndi matanthauzo a magulu a Unicode yawonjezedwa.

  • Adawonjezera kuthekera kopanga mafayilo ammutu mopanda pake
    zomwe zimagwiritsa ntchito -t --type-header options (kapena zoyenera
    masinthidwe) ndi malangizo atsopano /*!mutu:re2c:on*/ ndi
    /*!mutu:re2c:off*/. Izi zitha kukhala zothandiza pazochitika zomwe
    pamene re2c ikufunika kupanga matanthauzo amitundu, mapangidwe ndi macros,
    amagwiritsidwa ntchito m'magawo ena omasulira.

  • Re2c tsopano imamvetsetsa zilembo za UTF8 ndi makalasi amtundu wanthawi zonse.
    Mwachikhazikitso, re2c imagawa mawu ngati "βˆ€x βˆƒy" ngati.
    mndandanda wa zilembo za 1-bit ASCII e2 88 80 78 20 e2 88 83 79
    (ma hex code), ndipo ogwiritsa ntchito amayenera kuthawa zilembo za Unicode pamanja:
    "u2200x u2203y". Izi ndizovuta komanso zosayembekezereka kwa ambiri
    ogwiritsa (monga zikuwonetseredwa ndi malipoti a cholakwika nthawi zonse). Kotero tsopano
    re2c imapereka njira --input-encoding ,
    zomwe zimakulolani kuti musinthe khalidwe ndikuyika "βˆ€x βˆƒy" ngati
    2200 78 20 2203 79.

  • Re2c tsopano imalola kugwiritsa ntchito midadada ya re2c nthawi zonse mu -r --reuse mode.
    Izi ndizosavuta ngati fayilo yolowera ili ndi midadada yambiri komanso ena mwa iwo
    iyenera kugwiritsidwanso ntchito.

  • Tsopano mutha kukhazikitsa mtundu wa machenjezo ndi mauthenga olakwika
    pogwiritsa ntchito njira yatsopano --location-format . Mtundu wa GNU ukuwonetsedwa
    monga filename:line:column:, ndi mtundu wa MSVC monga filename(mzere,column).
    Izi zitha kukhala zothandiza kwa okonda IDE.
    Njira ya --verbose yawonjezedwanso, yomwe imasindikiza uthenga wachipambano wachidule ngati utapambana.

  • Mawonekedwe a "compatibility" okhala ndi flex adawongoleredwa - zolakwika zina zapang'onopang'ono zakonzedwa ndipo
    kutsogola kolakwika kwa opareshoni nthawi zina.
    M'mbiri, njira ya -F --flex-support inakulolani kulemba code
    zosakanikirana ndi kalembedwe ka flex ndi kalembedwe ka re2c, zomwe zimapangitsa kusanja kukhala kovuta.
    Flex compatibility mode sichimagwiritsidwa ntchito kawirikawiri mu code yatsopano,
    koma re2c ikupitilizabe kuthandizira kuti zigwirizane m'mbuyo.

  • The character class subtraction operator / tsopano ikugwira ntchito
    musanawonjezere encoding, yomwe imalola kuti igwiritsidwe ntchito pamilandu yochulukirapo,
    ngati kabisidwe kautali kosiyanasiyana kagwiritsidwa ntchito (mwachitsanzo UTF8).

  • Fayilo yotulutsa tsopano idapangidwa ndi atomiki: re2c imapanga fayilo yosakhalitsa poyamba
    ndikulemba zotsatira zake, kenako ndikulembanso fayilo yosakhalitsa kuti itulutsidwe
    ntchito imodzi.

  • Zolembazo zidamalizidwa ndikulembedwanso; makamaka, zatsopano zinawonjezeredwa
    mitu za kudzaza buffer
    ΠΈ za njira zowonera kutha kwa data yolowera.
    Zolemba zatsopano zimasonkhanitsidwa mu mawonekedwe
    buku lathunthu latsamba limodzi
    ndi zitsanzo (magwero omwewo amaperekedwa mu manpage ndi zolemba pa intaneti).
    Kuyesa kosakwanira kwapangidwa kuti tsambalo liziwerengeka bwino pama foni.

  • Kuchokera pamalingaliro a opanga, re2c yapeza kachitidwe kakang'ono kokwanira
    kukonza Debugging code tsopano woyimitsidwa mu kumasulidwa builds ndi
    ikhoza kuthandizidwa pogwiritsa ntchito configure options --enable-debug.

Kutulutsidwa kumeneku kunatenga nthawi yayitali - pafupifupi chaka chathunthu.
Nthawi zambiri, monga mwanthawi zonse, zinkagwiritsidwa ntchito popanga ndondomeko yanthanthi ndi kulemba
zolemba "Kutulutsa koyenera kwa POSIX Submatch pa NFA".
Ma algorithms omwe akufotokozedwa m'nkhaniyi akugwiritsidwa ntchito mu library library libre2c
(kumanga laibulale ndi ma benchmarks kumayimitsidwa mwachisawawa ndipo kumathandizidwa ndi njira yosinthira
--enable-libs). Laibulaleyi siimaganiziridwa ngati mpikisano ndi yomwe ilipo
ntchito ngati RE2, koma ngati nsanja yofufuzira pakupanga zatsopano
ma aligorivimu (omwe amatha kugwiritsidwa ntchito mu re2c kapena muma projekiti ena).
Ndiwothandizanso potengera kuyesa, ma benchmarks ndikupanga zomangira zilankhulo zina.

Zikomo kuchokera kwa opanga re2c kwa aliyense amene adathandizira kutulutsidwaku kuchitika,
komanso kwa anthu onse ammudzi kuti apeze malingaliro, malipoti a zolakwika, zigamba, chikhalidwe, ndi zina. ;]

Source: linux.org.ru

Kuwonjezera ndemanga