re2c 2.0

Pirmadienį, liepos 20 d., buvo išleistas greito leksinio analizatoriaus generatorius re2c.
Pagrindiniai pakeitimai:

  • Pridėtas Go kalbos palaikymas
    (įjungta naudojant re2c parinktį --lang go arba kaip atskirą re2go programą).
    C ir Go dokumentacija yra sukurta iš to paties teksto, bet su skirtingais
    kodo pavyzdžiai. Re2c kodo generavimo posistemis buvo visiškai pertvarkytas, o tai
    turėtų palengvinti naujų kalbų palaikymą ateityje.

  • Pridėta alternatyvi kūrimo sistema CMake (ačiū ligfx!).
    Re2c versti į CMake buvo bandoma jau seniai, bet iki ligfx niekas
    pasiūlė pilną sprendimą.
    Senoji „Autotools“ kūrimo sistema toliau palaikoma ir naudojama,
    ir artimiausiu metu neplanuojama jo atsisakyti (iš dalies tam, kad nesukurtų
    problemų platinimo kūrėjams, iš dalies dėl senos kūrimo sistemos
    stabilesnis ir glaustesnis nei naujasis).
    Abi sistemos vienodai nuolat testuojamos naudojant Travis CI.

  • Pridėta galimybė naudoti sąsajos kodą konfigūracijose
    bendroji API (bendra API). Anksčiau dauguma API turėjo būti nurodytos formoje
    funkcijos arba funkcijų makrokomandos. Dabar juos galima nustatyti savavališkai
    eilutės su pavadintais šablono parametrais, tokiais kaip @@{vardas} arba tiesiog @@ (jei
    yra tik vienas parametras ir nėra dviprasmybių). API stilių galima konfigūruoti
    re2c:api:style (funkcijos reikšmė nurodo funkcinį stilių, o laisvos formos reikšmė yra savavališka).

  • Patobulintas parinkties -c, --start-conditions veikimas, leidžiantis sujungti keletą
    tarpusavyje sujungti lekseriai viename re2c bloke. Dabar galite naudoti
    įprastus blokus, lygius su sąlyginiais, ir nustatyti keletą nesusijusių sąlyginių
    blokai viename faile.
    Patobulintos -r, --reuse parinktys (pakartotinis kodo naudojimas iš vieno bloko
    kituose blokuose) kartu su -c, --start-conditions ir -f, --storable-state parinktimis
    (būseną rodantis lekseris, kurį galima nutraukti savavališkoje vietoje
    ir tęsti vykdymą vėliau).

  • Ištaisyta naujai pridėto algoritmo, skirto apdoroti įvesties duomenų pabaigą, klaida
    (EOF taisyklė), kuri retais atvejais lėmė neteisingą apdorojimą
    sutampančios taisyklės.

  • Supaprastintas įkrovos procesas. Anksčiau kūrimo sistema jau bandė dinamiškai rasti
    pastatytas re2c, kuris galėtų būti naudojamas atstatyti save.
    Tai lėmė neteisingas priklausomybes (nes paaiškėjo, kad priklausomybės grafikas
    dinamiškas, ko nemėgsta dauguma statybinių sistemų).
    Dabar, norint atstatyti lekserius, to reikia aiškiai
    sukonfigūruokite kūrimo sistemą ir nustatykite kintamąjį RE2C_FOR_BUILD.

Ačiū visiems prisidėjusiems prie šio leidinio!

Šaltinis: linux.org.ru

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