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.
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).
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. ;]