Ukukhutshwa kwe-re2c 1.2 ye-lexical analyzer generator

yathatha indawo ukukhulula re2c, i-lexical analyzer generator yasimahla yeelwimi zeC kunye neC ++. Masikhumbule ukuba i-re2c yabhalwa ngo-1993 nguPeter Bambulis njengejenereyitha yokuvavanya i-lexical analyzers ekhawuleza kakhulu, eyahluke kwezinye iijenereyitha kwisantya sekhowudi eyenziweyo kunye nojongano lomsebenzisi oguquguqukayo ngokungaqhelekanga ovumela abahlalutyi ukuba badityaniswe ngokulula nangokufanelekileyo kwinto ekhoyo. isiseko sekhowudi. Ukusukela ngoko, le projekthi iye yaphuhliswa luluntu kwaye iyaqhubeka nokuba liqonga leemvavanyo kunye nophando kwicandelo lemigaqo-ntetho esesikweni kunye noomatshini baseburhulumenteni abalinganiselweyo.

Ukulungiselela ukukhululwa kwathabatha phantse unyaka. Ixesha elininzi, njengesiqhelo, belichithwa ekuphuhliseni isakhelo sethiyori nokubhala
amanqaku "Utsalo olusebenzayo lwe-POSIX Submatch kwi-NFA«.
I-algorithms echazwe kwinqaku iphunyezwa kwilayibrari yovavanyo ye-libre2c
(ukwakha ithala leencwadi kunye neemvavanyo zokusebenza kuvaliwe ngokungagqibekanga kwaye yenziwe yi "--enable-libs" yokuqwalasela ukhetho). Ithala leencwadi alenzelwanga ukuba likhuphisane neeprojekthi ezikhoyo ezifana ne-RE2, kodwa njengeqonga lophando lokuphuhlisa ezintsha.
i-algorithms (enokuthi emva koko isetyenziswe kwi-re2c okanye kwezinye iiprojekthi). Kwakhona kukulungele ukusuka kwindawo yokujonga uvavanyo, ukulinganisa ukusebenza kunye nokudala ukubophelela kwezinye iilwimi.

Iinguqulelo eziphambili kwinguqulelo re2c 1.2:

  • Kongezwe indlela entsha eyenziwe lula yokujonga isiphelo sedatha yokufaka ("umthetho we-EOF"). Kule nto, ulungelelwaniso lwe "re2c:eof" longeziwe,
    ikuvumela ukuba ukhethe unobumba weterminal,
    kunye nomgaqo okhethekileyo "$", obangelwa ukuba i-lexer
    ngempumelelo ifikelele esiphelweni sedatha yegalelo.
    Ngokwembali, i-re2c ibonelela ngokhetho lweendlela ezininzi zokuqinisekisa
    isiphelo samagalelo ahluka kukusikelwa umda, ukusebenza kakuhle kunye nokulula
    izicelo. Indlela entsha yenzelwe ukwenza lula ikhowudi yokubhala, ngelixa
    ngelixa ihlala isebenza kwaye isebenza ngokubanzi. Iindlela zakudala
    isasebenza kwaye inokukhethwa kwezinye iimeko.

  • Ukongezwa amandla okubandakanya iifayile zangaphandle usebenzisa umyalelo
    "/*!include:re2c "file.re" */", apho u-"file.re" iligama lefayile ekufuneka iqukwe. I-Re2c ijonga iifayile kuluhlu lwefayile olubandakanya,
    nakuluhlu lweendlela ezikhankanyiweyo usebenzisa u- "-I" ukhetho.
    Iifayile ezibandakanyiweyo zinokubandakanya ezinye iifayile.
    I-Re2c ibonelela ngeefayile "ezisemgangathweni" kwi-"include/" directory
    iprojekthi - kulindeleke ukuba iinkcazelo eziluncedo ziya kuqokelelana apho
    amabinzana aqhelekileyo, into efana nelayibrari eqhelekileyo.
    Ukuza kuthi ga ngoku, ngesicelo sabasebenzi, ifayile enye enenkcazo yeendidi ze-Unicode yongezwa.

  • Kongezwe ukukwazi ukuvelisa iifayile zeheader ngokungenasizathu
    umxholo usebenzisa "-t --type-header" iinketho (okanye ezifanelekileyo
    uqwalaselo) kunye nezikhokelo ezitsha "/*!header:re2c:on*/" kunye
    "/*!intloko:re2c:off*/". Oku kunokuba luncedo kwiimeko apho
    xa i-re2c idinga ukuvelisa iinkcazo zezinto eziguquguqukayo, izakhiwo kunye neemacros,
    isetyenziswa kwezinye iiyunithi zoguqulo.

  • I-Re2c ngoku iyayiqonda i-UTF8 literals kunye neeklasi zabalinganiswa kumagama aqhelekileyo.
    Ngokungagqibekanga, i-re2c iyacalula amabinzana anje "∀x ∃y" njenge
    ukulandelelana koonobumba be-1-bit ASCII “e2 88 80 78 20 e2 88 83 79”
    (iikhowudi ze-hex), kwaye abasebenzisi kufuneka babaleke oonobumba be-Unicode ngesandla:
    "\\u2200x\u2203y". Oku akulunganga kakhulu kwaye akulindelwanga kwabaninzi
    abasebenzisi (njengoko kungqinwa ziingxelo zebug rhoqo). Ngoko ngoku
    re2c inikeza ukhetho "--input-encoding {ascii | utf8}",
    ekuvumela ukuba utshintshe indlela yokuziphatha kwaye ucazulule “∀x ∃y” njenge
    “2200 78 20 2203 79.”

  • I-Re2c ngoku ivumela iibhloko ze-re2c eziqhelekileyo ukuba zisetyenziswe kwimowudi "-r --reuse".
    Oku kulungele ukuba ifayile yegalelo iqulethe iibhloko ezininzi kwaye ezinye zazo kuphela
    kufuneka iphinde isetyenziswe.

  • Ngoku unokuseta ifomathi yezilumkiso kunye nemiyalezo yempazamo
    usebenzisa ukhetho olutsha "--ifomati yendawo {gnu | msvc}". Ifomati ye-GNU ibonisiwe
    njenge "filename:line:column:", kunye nefomathi ye-MSVC njenge "filename(line,column)".
    Olu phawu lunokuba luncedo kubathandi be-IDE.
    Ukhetho "--verbose" nalo longezwe, olubonisa umyalezo omfutshane woloyiso ukuba uphumelele.

  • Imo "yokuhambelana" ene-flex iphuculwe - ezinye iimpazamo zokwahlulahlula zilungisiwe kwaye
    ukugqwesa komsebenzisi okungachanekanga kwiimeko ezinqabileyo.
    Ngokwembali, "-F --flex-support" ukhetho lukuvumela ukuba ubhale ikhowudi
    ixutywe kwisitayile esiguqukayo kunye nesimbo se-re2c, esenza ukwahlulahlula kube nzima.
    Imowudi yokuhambelana yeFlex ayifane isetyenziswe kwikhowudi entsha,
    kodwa i-re2c iyaqhubeka ukuyixhasa ukuhambelana nomva.

  • Umsebenzisi wokuthabatha wodidi lwabalinganiswa "/" uyasebenza ngoku
    phambi kokwandisa i-encoding, evumela ukuba isetyenziswe kwinani elikhulu lamatyala,
    ukuba ubude obuguquguqukayo bekhowudi buyasetyenziswa (umzekelo UTF8).

  • Ifayile yemveliso ngoku yenziwe nge-atom: i-re2c yenza ifayile yethutyana kuqala
    kwaye ibhala isiphumo kuyo, kwaye ke ithiya ngokutsha ifayile yethutyana kwimveliso
    utyando olunye.

  • Amaxwebhu agqityiwe kwaye abhalwa ngokutsha; ngokukodwa, ezintsha zongezwa
    izahluko malunga http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и malunga neendlela zokujonga ukuphela kwedatha yokufaka.
    Amaxwebhu amatsha aqokelelwa kwifom
    isikhokelo esibanzi sephepha elinye
    ngemizekelo (imithombo efanayo inikezelwe kwi-manpage nakumaxwebhu akwi-intanethi).
    Iinzame ezimbi zenziwe ukuphucula ukufundeka kwendawo kwiifowuni.

  • Ngokwembono yabaphuhlisi, i-re2c ifumene isistim esezantsi epheleleyo
    ukulungisa ingxaki Ikhowudi yokulungisa ingxaki ngoku ikhubaziwe ekukhululweni kwakha kunye
    inokwenziwa kusetyenziswa ukhetho loqwalaselo "--enable-debug".

umthombo: opennet.ru

Yongeza izimvo