chinachitika kumasula re2c, jenereta yaulere ya lexical analyzer ya zilankhulo za C ndi C ++. Kumbukirani kuti re2c inalembedwa mu 1993 ndi Peter Bambulis monga jenereta yoyesera yachangu kwambiri ya lexical analyzers, yosiyana ndi majenereta ena pa liwiro la kachidindo kopangidwa ndi mawonekedwe osinthika modabwitsa omwe amalola kuti osanthula azitha kuphatikizidwa mosavuta ndi code yomwe ilipo. maziko. Kuyambira nthawi imeneyo, polojekitiyi yapangidwa ndi anthu ammudzi ndipo ikupitirizabe kukhala nsanja yoyesera ndi kufufuza pamagulu ovomerezeka a galamala ndi makina owerengeka a boma.
Kukonzekera kumasulidwa kunatenga 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 kuyesa kwa magwiridwe antchito kumayimitsidwa mwachisawawa ndipo kumathandizidwa ndi njira yosinthira "-enable-libs"). Laibulaleyi sinapangidwe kuti ipikisane ndi mapulojekiti omwe alipo monga RE2, koma ngati nsanja yofufuzira kuti apange zatsopano.
ma aligorivimu (omwe amatha kugwiritsidwa ntchito mu re2c kapena muma projekiti ena). Ndiwothandizanso kuchokera pakuwona kuyesa, kuyeza magwiridwe antchito ndikupanga zomangira zilankhulo zina.
Zatsopano zazikulu mu mtundu wa re2c 1.2:
Onjezani njira yatsopano yosavuta yowonera kumapeto kwa zolowetsa ("lamulo la EOF"). Pachifukwa ichi, kasinthidwe ka "re2c:eof" wawonjezedwa,
kumakupatsani mwayi wosankha mtundu wa terminal,
ndi lamulo lapadera "$", lomwe limayambitsidwa 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
"/*!include:re2c "file.re" */", pomwe "file.re" ndi dzina la fayilo yomwe iyenera kuphatikizidwa. Re2c imayang'ana mafayilo mumafayilo kuphatikiza mafayilo,
komanso pamndandanda wanjira zomwe zafotokozedwa pogwiritsa ntchito njira ya "-I".
Mafayilo ophatikizidwa angaphatikizepo mafayilo ena.
Re2c imapereka mafayilo "okhazikika" mu "include/" directory
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.
Re2c tsopano imamvetsetsa zilembo za UTF8 ndi makalasi amtundu wanthawi zonse.
Mwachikhazikitso, re2c imagawa mawu ngati "∀x ∃y" ngati
kutsatizana kwa 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 mwayi "--input-encoding {ascii | utf8}",
zomwe zimakulolani kuti musinthe khalidwe ndikuyika "∀x ∃y" ngati
"2200 78 20 2203 79."
Re2c tsopano imalola kuti midadada ya re2c igwiritsidwe ntchito 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 {gnu | msvc}". Mtundu wa GNU ukuwonetsedwa
monga "filename:line:column:", ndi mtundu wa MSVC ngati "filename(line,column)".
Izi zitha kukhala zothandiza kwa okonda IDE.
Njira ya "--verbose" yawonjezedwanso, yomwe imawonetsa uthenga wachipambano waufupi ngati utapambana.
Mawonekedwe "ogwirizana" okhala ndi flex awongoleredwa - zolakwika zina zapang'onopang'ono zakonzedwa ndipo
kutsogola kolakwika kwa opareshoni nthawi zina.
M'mbiri, njira ya "-F --flex-support" idakulolani kuti mulembe khodi
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.