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