Kutulutsidwa kwa re2c lexer jenereta 1.2

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.

  • Adawonjezera kuthekera kopanga mafayilo ammutu mopanda pake
    zomwe zimagwiritsa ntchito "-t --type-header" zosankha (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
    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.

  • Wothandizira kalasi yochotsa "/" akugwiranso 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 http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и za njira zowonera kutha kwa data yolowera.
    Zolemba zatsopano zimasonkhanitsidwa mu mawonekedwe
    kalozera wokwanira watsamba 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 kuyatsidwa pogwiritsa ntchito njira yosinthira "-enable-debug".

Source: opennet.ru

Kuwonjezera ndemanga