re2c 2.0

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.

  • Dodana je alternativna CMake sustav gradnje (hvala ligfx!).


    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

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster