re2c 1.2

Penktadienį, rugpjūčio 2 d., buvo išleistas nemokamas leksinių analizatorių generatorius re2c, skirtas C ir C++ kalboms. Re2c 1993 metais parašė Peteris Bamboulis kaip eksperimentinis labai greitų leksinių analizatorių generatorius, išsiskiriantis iš kitų generatorių generuojamo kodo greičiu ir neįprastai lanksčia vartotojo sąsaja, leidžiančia lengvai ir efektyviai įterpti analizatorius į esamą kodų bazę. Nuo tada projektą plėtojo bendruomenė ir jis tebėra eksperimentų ir tyrimų platforma formaliosios gramatikos ir baigtinių būsenų mašinų srityje.

Pagrindinės 1.2 versijos naujovės:

  • Pridėtas naujas (supaprastintas) būdas patikrinti įvesties duomenų pabaigą
    (angliškai „EOF rule“).
    Tam buvo pridėta re2c:eof konfigūracija,
    leidžia pasirinkti terminalo simbolį,
    ir speciali $ taisyklė, kuri įsijungia, jei lekseris
    sėkmingai pasiekė įvesties duomenų pabaigą.
    Istoriškai re2c suteikia galimybę pasirinkti kelis būdus, kaip patikrinti
    įvesties pabaiga skiriasi ribotumu, efektyvumu ir paprastumu
    programos. Naujasis metodas skirtas supaprastinti kodo rašymą
    išlikdami veiksmingi ir plačiai taikomi. Seni būdai
    vis dar veikia ir kai kuriais atvejais gali būti teikiama pirmenybė.

  • Pridėta galimybė įtraukti išorinius failus naudojant direktyvą
    /*!include:re2c "failas.re" */ kur failas.re
    tai įtraukimo failo pavadinimas. Re2c ieško failų, įskaitant failų katalogą,
    taip pat kelių, nurodytų naudojant parinktį -I, sąraše.
    Įtraukti failai gali apimti kitus failus.
    „Re2c“ pateikia „standartinius“ failus kataloge include/
    projektas – tikimasi, kad jame susikaups naudingų apibrėžimų
    reguliarios išraiškos, kažkas panašaus į standartinę biblioteką.
    Kol kas darbuotojų pageidavimu buvo pridėtas vienas failas su Unicode kategorijų apibrėžimais.

  • Pridėta galimybė generuoti antraštės failus su savavališkai
    turinį naudojant -t --type-header parinktis (arba atitinkamą
    konfigūracijos) ir naujos direktyvos /*!header:re2c:on*/ ir
    /*!header:re2c:off*/. Tai gali būti naudinga tais atvejais, kai
    kai re2c reikia generuoti kintamųjų, struktūrų ir makrokomandų apibrėžimus,
    naudojami kituose vertimo skyriuose.

  • Re2c dabar supranta UTF8 literatūrą ir simbolių klases įprastose išraiškose.
    Pagal numatytuosius nustatymus re2c analizuoja tokias išraiškas kaip „∀x ∃y“ kaip.
    1 bitų ASCII simbolių seka e2 88 80 78 20 e2 88 83 79
    (šešioliktainiai kodai), o vartotojai turi pašalinti Unicode simbolius rankiniu būdu:
    „u2200x u2203y“. Tai daugeliui labai nepatogu ir netikėta
    vartotojų (tai liudija nuolatiniai klaidų pranešimai). Taigi dabar
    re2c suteikia --input-encoding parinktį ,
    kuri leidžia keisti elgesį ir analizuoti „∀x ∃y“ kaip
    2200 78 20 2203 79.

  • Re2c dabar leidžia naudoti įprastus re2c blokus -r --reuse režimu.
    Tai patogu, jei įvesties faile yra daug blokų ir tik kai kurie iš jų
    reikia pakartotinai panaudoti.

  • Dabar galite nustatyti įspėjimų ir klaidų pranešimų formatą
    naudojant naują parinktį --location-format . Rodomas GNU formatas
    kaip failo pavadinimas: eilutė: stulpelis: ir MSVC formatą kaip failo pavadinimas (eilutė, stulpelis).
    Ši funkcija gali būti naudinga IDE mėgėjams.
    Taip pat buvo pridėta parinktis --verbose, kuri sėkmingai atspausdina trumpą pergalės pranešimą.

  • „Suderinamumo“ režimas su „flex“ buvo patobulintas – ištaisytos kai kurios analizavimo klaidos ir
    retais atvejais neteisinga operatoriaus pirmenybė.
    Istoriškai parinktis -F --flex-support leido rašyti kodą
    sumaišytas flex stiliumi ir re2c stiliumi, todėl analizuoti šiek tiek sunku.
    „Flex“ suderinamumo režimas retai naudojamas naujame kode,
    bet re2c ir toliau palaiko jį atgaliniam suderinamumui.

  • Dabar taikomas simbolių klasės atimties operatorius /
    prieš išplečiant kodavimą, kuris leidžia jį naudoti daugybe atvejų,
    jei naudojama kintamo simbolio ilgio koduotė (pavyzdžiui, UTF8).

  • Išvesties failas dabar sukuriamas atomiškai: re2c pirmiausia sukuria laikiną failą
    ir įrašo į jį rezultatą, o tada pervadina laikinąjį failą į išvestį
    viena operacija.

  • Dokumentacija buvo užpildyta ir perrašyta; visų pirma buvo pridėta naujų
    skyriai apie buferio užpildymą
    и apie būdus, kaip patikrinti įvesties duomenų pabaigą.
    Nauji dokumentai surenkami formoje
    išsamus vieno puslapio vadovas
    su pavyzdžiais (tie patys šaltiniai pateikiami žinyne ir internetinėje dokumentacijoje).
    Buvo atlikta menkų bandymų pagerinti svetainės skaitomumą telefonuose.

  • Kūrėjų požiūriu, re2c įsigijo išsamesnę posistemę
    derinimas Derinimo kodas dabar išjungtas leidimo versijose ir
    galima įjungti naudojant konfigūravimo parinktį --enable-debug.

Šis leidimas užtruko ilgai – beveik visus metus.
Didžioji dalis laiko, kaip visada, buvo skirta teorinės sistemos kūrimui ir rašymui
Straipsnis „Efektyvus POSIX submatch ištraukimas NFA“.
Straipsnyje aprašyti algoritmai yra įgyvendinti eksperimentinėje bibliotekoje libre2c
(bibliotekos ir etalonų kūrimas pagal numatytuosius nustatymus yra išjungtas ir įgalinamas konfigūravimo parinktimi
--enable-libs). Biblioteka nesuvokiama kaip konkurentė esamai
tokiems projektams kaip RE2, bet kaip mokslinių tyrimų platforma kuriant naujus
algoritmai (kurie vėliau gali būti naudojami re2c ar kituose projektuose).
Tai taip pat patogu testavimo, etalonų ir susiejimo su kitomis kalbomis kūrimo požiūriu.

Re2c kūrėjų ačiū visiems, padėjusiems išleisti šį leidimą,
ir apskritai bendruomenei dėl idėjų, klaidų pranešimų, pataisų, moralės ir kt. ;]

Šaltinis: linux.org.ru

Добавить комментарий