re2c 2.0

U ponedjeljak, 20. jula, izašao je re2c, brzi generator leksičkog analizatora.
Glavne promjene:

  • Dodata podrška za jezik Go
    (omogućeno ili opcijom --lang go za re2c, ili kao poseban re2go program).
    Dokumentacija za C i Go je generisana iz istog teksta, ali sa različitim
    primjeri koda. Podsistem za generisanje koda u re2c-u je potpuno redizajniran, što
    trebalo bi olakšati podršku novih jezika u budućnosti.

  • Dodan je alternativni sistem izgradnje za CMake (hvala ligfx!).
    Pokušaji da se prevede re2c u CMake već dugo su napravljeni, ali prije ligfx-a niko
    ponudio kompletno rešenje.
    Stari sistem izgradnje Autotools nastavlja se podržavati i koristiti,
    a u dogledno vrijeme ne planira se napustiti (djelomično da se ne stvara
    problemi za programere distribucije, dijelom zbog starog sistema izgradnje
    stabilniji i sažetiji od novog).
    Oba sistema se kontinuirano testiraju koristeći Travis CI.

  • Dodata mogućnost postavljanja koda interfejsa u konfiguracijama kada se koristi
    generički API. Ranije je većina API-ja morala biti navedena u obrascu
    funkcije ili makronaredbe funkcija. Sada se mogu specificirati u obliku proizvoljnog
    linije sa imenovanim parametrima šablona kao što je @@{name} ili samo @@ (ako
    postoji samo jedan parametar i nema dvosmislenosti). API stil je određen konfiguracijom
    re2c:api:style (vrijednost funkcije specificira funkcionalni stil, a free-form specificira proizvoljan stil).

  • Rad opcije -c, --start-conditions je poboljšan, što vam omogućava da kombinujete nekoliko
    međusobno povezani lekseri u jednom re2c bloku. Sada možete koristiti
    regularne blokove zajedno sa uslovnim i specificirajte nekoliko nepovezanih uslovnih
    blokova u jednom fajlu.
    Poboljšan rad opcije -r, --reuse (ponovna upotreba koda iz jednog bloka
    u drugim blokovima) u kombinaciji sa opcijama -c, --start-conditions i -f, --storable-state
    (lexer sa stanjem koji se može prekinuti u bilo kom trenutku
    i nastavite s izvršenjem kasnije).

  • Ispravljena greška u nedavno dodanom algoritmu za kraj unosa
    (EOF pravilo), što je u rijetkim slučajevima dovelo do pogrešne obrade
    pravila preklapanja.

  • Bootstrap proces je pojednostavljen. Ranije je sistem izgradnje već pokušavao dinamički pronaći
    re2c build koji se može koristiti za rekonstrukciju samog sebe.
    To je rezultiralo netočnim ovisnostima (pošto je graf ovisnosti bio
    dinamičan, što većina sistema izgradnje ne voli).
    Sada, da biste ponovo izgradili leksere, morate eksplicitno
    konfigurirajte sistem izgradnje i postavite varijablu RE2C_FOR_BUILD.

Hvala svima koji su učestvovali u pripremi ovog izdanja!

izvor: linux.org.ru

Dodajte komentar