U ponedjeljak, 20. srpnja, objavljen je re2c – generator brzih leksikografskih analizatora.
Glavne promjene:
Dodana je podrška za Go jezik.
(aktivira se ili opcijom —lang go za re2c, ili kao zasebni program re2go).
Dokumentacija za C i Go generira se iz istog teksta, ali s različitim
primjerima koda. Potpuno je redizajnirana podsustav za generaciju koda u re2c, što
bi trebalo olakšati podršku za nove jezike u budućnosti.-
Pokušaji prevođenja re2c na CMake poduzimani su već neko vrijeme, ali prije ligfx nitko nije
ponudio cjelovito rješenje.
Stari sustav gradnje na Autotools i dalje se podržava i koristi,
a u bliskoj budućnosti nema planova za njegovu eliminaciju (djelomično kako ne bi stvorili
probleme programerima distribucija, a djelomično i zato što je stari sustav gradnje
stabilniji i sažetiji od novog).
Oba sustava kontinuirano se testiraju pomoću Travis CI. Dodana je mogućnost definiranja sučeljnog koda u konfiguracijama pri korištenju
generičkog API-ja (generic API). Ranije se većina API-ja morala definirati u obliku
funkcija ili funkcionalnih makronaredbi. Sada se mogu definirati u obliku proizvoljnih
nizova s imenovanim šablonskim parametrima kao što je @@{name} ili samo @@ (ako
parametar je jedan i ne nastaje dvosmislenost). Stil API-ja definira se konfiguracijom
re2c:api:style (vrijednost functions postavlja funkcionalni stil, a free-form – proizvoljan).Poboljšano je funkcioniranje opcije -c, —start-conditions, koja omogućava kombiniranje više
povezanih leksikografa u jednom re2c-bloku. Sada se mogu koristiti
obični blokovi zajedno s uvjetnim blokovima i definirati nekoliko nepovezanih uvjetnih
blokova u jednom datoteci.
Poboljšano je funkcioniranje opcije -r, —reuse (ponovna upotreba koda iz jednog bloka
u drugim blokovima) u kombinaciji s opcijama -c, —start-conditions i -f, —storable-state
(leksikograf s očuvanim stanjem, koji se može prekinuti u proizvoljnom mjestu
i nastaviti s izvršenjem kasnije).Ispravljena je greška u nedavno dodanom algoritmu za obradu kraja ulaznih podataka
(EOF pravilo), koja je u rijetkim slučajevima dovela do netočnog obrade
preklapajućih pravila.P pojednostavljen je proces bootstrapinga. Ranije je sustav gradnje pokušavao dinamički pronaći već
sagrađeni re2c koji bi se mogao koristiti za ponovno građenje samog sebe.
To je dovelo do pogrešnih zavisnosti (budući da je graf zavisnosti bio
dinamičan, što većina sistema gradnje ne voli).
Sada da bismo ponovo izgradili leksere, potrebno je eksplicitno
konfigurisati sistem gradnje i postaviti promenljivu RE2C_FOR_BUILD.
Hvala svima koji su učestvovali u pripremi ovog izdanja!
Izvor: linux.org.ru
