re2c 1.2

Mnamo Ijumaa, Agosti 2, kutolewa kwa re2c, jenereta isiyolipishwa ya uchanganuzi wa leksimu kwa lugha za C na C++, ilitolewa. Re2c iliandikwa mwaka wa 1993 na Peter Bamboulis kama jenereta ya majaribio ya vichanganuzi vya kileksika kwa haraka sana, vinavyotofautishwa na jenereta nyingine kwa kasi ya msimbo uliotolewa na kiolesura cha mtumiaji kinachonyumbulika isivyo kawaida ambacho huruhusu vichanganuzi kupachikwa kwa urahisi na kwa ufanisi katika msingi wa msimbo uliopo. Tangu wakati huo, mradi umeendelezwa na jamii na unaendelea kuwa jukwaa la majaribio na utafiti katika uwanja wa sarufi rasmi na mashine za hali ya mwisho.

Ubunifu kuu katika toleo la 1.2:

  • Imeongeza njia mpya (iliyorahisishwa) ya kuangalia mwisho wa data ya ingizo
    (Kiingereza "EOF rule").
    Kwa hili, usanidi wa re2c:eof umeongezwa,
    hukuruhusu kuchagua herufi ya terminal,
    na sheria maalum ya $ ambayo huchoma ikiwa mtoaji lexer
    ilifanikiwa kufikia mwisho wa data ya ingizo.
    Kihistoria, re2c hutoa chaguo la mbinu kadhaa za uthibitishaji kwa
    mwisho wa pembejeo zinazotofautiana katika ukomo, ufanisi na urahisi
    maombi. Njia mpya imeundwa ili kurahisisha msimbo wa uandishi, wakati
    huku ikibaki kuwa na ufanisi na inatumika sana. Njia za zamani
    bado inafanya kazi na inaweza kupendekezwa katika hali zingine.

  • Imeongeza uwezo wa kujumuisha faili za nje kwa kutumia maagizo
    /*!jumuisha:re2c "file.re" */ ambapo file.re
    hili ndilo jina la faili ya pamoja. Re2c hutafuta faili kwenye saraka ya faili inayojumuisha,
    na vile vile kwenye orodha ya njia zilizoainishwa kwa kutumia -I chaguo.
    Faili zilizojumuishwa zinaweza kujumuisha faili zingine.
    Re2c hutoa faili "za kawaida" kwenye ni pamoja na/ saraka
    mradi - inatarajiwa kwamba ufafanuzi muhimu utajilimbikiza hapo
    maneno ya kawaida, kitu kama maktaba ya kawaida.
    Hadi sasa, kwa ombi la wafanyakazi, faili moja yenye ufafanuzi wa makundi ya Unicode imeongezwa.

  • Imeongeza uwezo wa kutengeneza faili za kichwa bila mpangilio
    yaliyomo kwa kutumia -t --type-header chaguzi (au inafaa
    usanidi) na maagizo mapya /*!kichwa:re2c:on*/ na
    /*!kichwa:re2c:off*/. Hii inaweza kuwa na manufaa katika hali ambapo
    wakati re2c inahitaji kutoa ufafanuzi wa anuwai, miundo na macros,
    kutumika katika vitengo vingine vya tafsiri.

  • Re2c sasa inaelewa herufi halisi za UTF8 na madarasa ya wahusika katika misemo ya kawaida.
    Kwa chaguo-msingi, re2c huchanganua misemo kama "βˆ€x βˆƒy" kama.
    mlolongo wa herufi 1-bit ASCII e2 88 80 78 20 e2 88 83 79
    (nambari za hex), na watumiaji wanapaswa kutoroka herufi za Unicode kwa mikono:
    "u2200x u2203y". Hili ni jambo lisilofaa sana na lisilotarajiwa kwa wengi
    watumiaji (kama inavyothibitishwa na ripoti za mara kwa mara za hitilafu). Hivyo sasa
    re2c hutoa --input-encoding chaguo ,
    ambayo hukuruhusu kubadilisha tabia na kuchanganua "βˆ€x βˆƒy" kama
    2200 78 20 2203 79.

  • Re2c sasa inaruhusu matumizi ya vizuizi vya kawaida vya re2c katika -r --reuse mode.
    Hii ni rahisi ikiwa faili ya pembejeo ina vizuizi vingi na ni baadhi yao tu
    inahitaji kutumika tena.

  • Sasa unaweza kuweka umbizo la maonyo na ujumbe wa makosa
    kwa kutumia --location-format chaguo jipya . Umbizo la GNU linaonyeshwa
    kama jina la faili:line:column:, na umbizo la MSVC kama jina la faili(line,column).
    Kipengele hiki kinaweza kuwa muhimu kwa wapenzi wa IDE.
    Chaguo la --verbose pia limeongezwa, ambalo huchapisha ujumbe mfupi wa ushindi ukifaulu.

  • Hali ya "utangamano" na flex imeboreshwa - baadhi ya makosa ya uchanganuzi yamewekwa na
    utangulizi usio sahihi wa waendeshaji katika matukio machache.
    Kihistoria, -F --flex-support chaguo lilikuruhusu kuandika msimbo
    iliyochanganywa kwa mtindo wa kunyumbulika na mtindo wa re2c, ambao hufanya uchanganuzi kuwa mgumu kidogo.
    Njia ya utangamano ya Flex haitumiki sana katika nambari mpya,
    lakini re2c inaendelea kuiunga mkono kwa utangamano wa nyuma.

  • Opereta ya kutoa ya darasa la wahusika / sasa inatumika
    kabla ya kupanua usimbuaji, ambayo inaruhusu kutumika katika idadi kubwa ya kesi,
    ikiwa usimbaji wa urefu wa herufi tofauti unatumika (kwa mfano UTF8).

  • Faili ya pato sasa imeundwa kwa atomi: re2c huunda faili ya muda kwanza
    na huandika matokeo ndani yake, na kisha kubadilisha faili ya muda kwa pato
    operesheni moja.

  • Nyaraka zilikamilishwa na kuandikwa upya; hasa, mpya ziliongezwa
    sura kuhusu kujaza bafa
    ΠΈ kuhusu njia za kuangalia mwisho wa data ya ingizo.
    Nyaraka mpya zinakusanywa katika fomu
    mwongozo wa kina wa ukurasa mmoja
    na mifano (vyanzo sawa vinatolewa katika manpage na katika nyaraka za mtandaoni).
    Majaribio duni yamefanywa ili kuboresha usomaji wa tovuti kwenye simu.

  • Kwa mtazamo wa wasanidi programu, re2c imepata mfumo mdogo kamili zaidi
    utatuzi Msimbo wa utatuzi sasa umezimwa katika miundo ya toleo na
    inaweza kuwezeshwa kwa kutumia chaguo la kusanidi --enable-debug.

Toleo hili lilichukua muda mrefu - karibu mwaka mzima.
Wakati mwingi, kama kawaida, ilitumika kuunda mfumo wa kinadharia na uandishi
nakala "Uchimbaji mzuri wa mechi ndogo ya POSIX kwenye NFA".
Kanuni zilizofafanuliwa katika makala zinatekelezwa katika maktaba ya majaribio libre2c
(kujenga maktaba na alama za alama kumezimwa kwa chaguo-msingi na kuwezeshwa na chaguo la kusanidi
--wezesha-libs). Maktaba haijachukuliwa kama mshindani wa zilizopo
miradi kama RE2, lakini kama jukwaa la utafiti kwa maendeleo ya mpya
algorithms (ambayo inaweza kutumika katika re2c au katika miradi mingine).
Pia ni rahisi kutoka kwa mtazamo wa kupima, alama na kuunda vifungo kwa lugha nyingine.

Asante kutoka kwa wasanidi wa re2c kwa kila mtu ambaye alisaidia toleo hili kutokea,
na kwa jamii kwa ujumla kwa mawazo, ripoti za hitilafu, mabaka, ari n.k. ;]

Chanzo: linux.org.ru

Kuongeza maoni