Kutulutsidwa kwa re2c lexer jenereta 2.0

chinachitika kumasula re2c 2.0, jenereta yaulere ya lexical analyzer ya zilankhulo za C ndi C ++. Pulojekiti ya re2c idapangidwa koyambirira mu 1993 ndi Peter Bamboulis ngati jenereta yoyesera ya ma lexical analyzers othamanga kwambiri, osiyanitsidwa ndi majenereta ena ndi liwiro la kachidindo komwe amapangidwa komanso mawonekedwe osinthika modabwitsa omwe amalola osanthula kuti alowetsedwe mosavuta komanso moyenera munjira yomwe ilipo. kodi base. Kuyambira nthawi imeneyo, polojekitiyi yapangidwa ndi anthu ammudzi ndipo ikupitirizabe kukhala nsanja yoyesera ndi kufufuza pamagulu ovomerezeka a galamala ndi makina owerengeka a boma.

Zosintha zazikulu:

  • Thandizo lowonjezera la chilankhulo cha Go (lothandizidwa mwina ndi "--lang go" njira ya re2c, kapena ngati pulogalamu yosiyana ya re2go). Zolemba za C ndi Go zimapangidwa kuchokera ku zolemba zomwezo, koma ndi zitsanzo za ma code osiyanasiyana. Njira yopangira ma code mu re2c idasinthidwanso, zomwe ziyenera kupangitsa kuti zikhale zosavuta kuthandizira zilankhulo zatsopano mtsogolo.
  • Anawonjezera njira ina yomanga ya CMake (zikomo ligfx!). Kuyesa kumasulira re2c kupita ku CMake kwachitika kwa nthawi yayitali, koma mpaka ligfx palibe amene adapereka yankho lokwanira. Makina akale omanga a Autotools akupitilizabe kuthandizidwa ndikugwiritsidwa ntchito, ndipo palibe malingaliro oti asiye mtsogolomo (mwanjira ina kupewa kubweretsa mavuto kwa opanga ogawa, mwina chifukwa chakuti dongosolo lakale lomanga ndi lokhazikika komanso lalifupi kuposa latsopano. ). Machitidwe onsewa amayesedwa mosalekeza pogwiritsa ntchito Travis CI.
  • Anawonjezera luso lofotokozera mawonekedwe a mawonekedwe mumasinthidwe mukamagwiritsa ntchito generic API. M'mbuyomu, ma API ambiri amayenera kufotokozedwa mu mawonekedwe a ntchito kapena ma macros. Tsopano atha kufotokozedwa ngati zingwe zongosintha zokhala ndi ma tempuleti otchedwa "@@{name}" kapena kungoti "@@" (ngati pali gawo limodzi lokha ndipo palibe kusamveka bwino). Mtundu wa API umakhazikitsidwa ndi re2c: api: kasinthidwe kalembedwe (mtengo wantchito umatanthawuza mawonekedwe ogwirira ntchito, ndipo mawonekedwe aulere amatchula masitayilo osagwirizana).
  • Kugwiritsa ntchito njira ya "-c", "-start-conditions" kwawongoleredwa, kukulolani kuti muphatikize ma lexers angapo olumikizana mu block imodzi ya re2c. Tsopano mutha kugwiritsa ntchito midadada yokhazikika limodzi ndi zokhazikika ndikutanthauzira midadada ingapo yosagwirizana mu fayilo imodzi. Kuchita bwino kwa njira ya "-r", "--reuse" (kugwiritsanso ntchito kachidindo kuchokera ku chipika chimodzi m'midadada ina) kuphatikiza "-c", "--start-conditions" ndi "-f", "---- storable-state" (cholemba chodziwika bwino chomwe chingathe kusokonezedwa nthawi iliyonse ndikupitiriza kuphedwa pambuyo pake).
  • Kukonza cholakwika mu algorithm yomwe yangowonjezeredwa posachedwa (lamulo la EOF), zomwe nthawi zambiri zidapangitsa kuti pakhale kulakwitsa kwa malamulo opitilira.
  • Njira ya bootstrap yakhala yosavuta. M'mbuyomu, makina omanga adayesa kupeza re2c yomangidwa kale yomwe ingagwiritsidwe ntchito kudzimanganso. Izi zidadzetsa kudalira kolakwika (chifukwa graph yodalira inali yamphamvu, yomwe machitidwe ambiri omanga sakonda). Tsopano, kuti mumangenso ma lexers, muyenera kukonza dongosolo lomanga ndikukhazikitsa RE2C_FOR_BUILD kusintha.

Source: opennet.ru

Kuwonjezera ndemanga