Re2c lexer generator 1.2 išleidimas

įvyko paleisti re2c, nemokamas leksinio analizatoriaus generatorius C ir C++ kalboms. Prisiminkime, kad re2c 1993 metais parašė Petras Bambulis kaip eksperimentinis labai greitų leksinių analizatorių generatorius, besiskiriantis nuo kitų generatorių generuojamo kodo greičiu ir neįprastai lanksčia vartotojo sąsaja, leidžiančia lengvai ir efektyviai integruoti 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.

Pasiruošimas išleidimui truko beveik visus metus. Didžioji dalis laiko, kaip visada, buvo skirta teorinės sistemos kūrimui ir rašymui
straipsniai "Efektyvus POSIX submatch ištraukimas naudojant NFA"
Straipsnyje aprašyti algoritmai yra įgyvendinti eksperimentinėje bibliotekoje libre2c
(bibliotekos kūrimas ir našumo testai pagal numatytuosius nustatymus yra išjungti ir įgalinami konfigūravimo parinktimi „—enable-libs“). Biblioteka skirta ne konkurentei esamiems projektams, tokiems kaip RE2, o kaip tyrimų platforma naujų kūrimui.
algoritmai (kurie vėliau gali būti naudojami re2c ar kituose projektuose). Tai taip pat patogu tikrinant, matuojant našumą ir kuriant susiejimą su kitomis kalbomis.

Pagrindinės naujovės re2c 1.2 versijoje:

  • Pridėtas naujas supaprastintas įvesties duomenų pabaigos tikrinimo metodas („EOF taisyklė“). Tam buvo pridėta „re2c:eof“ konfigūracija,
    leidžia pasirinkti terminalo simbolį,
    ir speciali taisyklė „$“, kuri suveikia, 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 "file.re" */", kur "file.re" yra failo, kurį reikia įtraukti, 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 atitinkamas
    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 parinktį „--input-encoding {ascii | utf8}",
    kuri leidžia keisti elgesį ir analizuoti „∀x ∃y“ kaip
    „2200 78 20 2203 79“.

  • Re2c dabar leidžia įprastus re2c blokus naudoti „-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 {gnu | msvc}". Rodomas GNU formatas
    kaip „failo pavadinimas: eilutė: stulpelis:“, o 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, jei pavyks, rodo 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-suppor“ 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 http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и 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".

Šaltinis: opennet.ru

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