re2c 2.0

U ponedjeljak, 20. srpnja, objavljeno je izdanje re2c, brzog generatora leksičkog analizatora.
Velike promjene:

  • Dodana podrška za Go jezik
    (omogućeno s opcijom --lang go za re2c ili kao samostalan re2go program).
    Dokumentacija za C i Go generirana je iz istog teksta, ali s različitim
    primjeri kodova. Podsustav za generiranje koda u re2c potpuno je redizajniran, što
    trebalo bi olakšati podršku za nove jezike u budućnosti.

  • Dodan alternativni sustav izrade na CMakeu (hvala ligfx!).
    Dugo se pokušava prevesti re2c u CMake, ali prije ligfxa nitko
    ponudio cjelovito rješenje.
    Stari sustav izrade na Autotoolsu nastavlja biti podržan i korišten,
    i u doglednoj budućnosti nema planova za njegovo napuštanje (djelomično da ne stvara
    problemi za razvojne programere distribucije, dijelom zbog starog sustava izrade
    stabilniji i koncizniji od novog).
    Oba sustava se jednako kontinuirano testiraju pomoću Travis CI.

  • Dodana je mogućnost postavljanja koda sučelja u konfiguracijama prilikom korištenja
    generički API (generički API). Prije je većina API-ja morala biti navedena u obrascu
    funkcije ili makronaredbe funkcija. Sada se mogu postaviti u proizvoljnom obliku
    nizovi s imenovanim parametrima predloška u obliku @@{name} ili samo @@ (ako
    postoji samo jedan parametar i nema dvosmislenosti). API stil se može konfigurirati
    re2c:api:style (vrijednost funkcije određuje funkcionalni stil, dok je vrijednost slobodnog oblika proizvoljna).

  • Poboljšan rad opcije -c, --start-conditions, koja vam omogućuje kombiniranje nekoliko
    međusobno povezani lekseri u jednom re2c bloku. Sada možete koristiti
    obične blokove u rangu s onima uvjetovanim i postaviti nekoliko nepovezanih uvjeta
    blokova u jednoj datoteci.
    Poboljšane opcije -r, --reuse (ponovno korištenje koda iz jednog bloka
    u drugim blokovima) u kombinaciji s opcijama -c, --start-conditions i -f, --storable-state
    (lekser sa stanjem koji se može prekinuti na proizvoljnom mjestu
    a izvođenje nastaviti kasnije).

  • Ispravljena je pogreška u novododanom algoritmu za rukovanje krajem ulaznih podataka
    (EOF pravilo), što je u rijetkim slučajevima dovelo do netočne obrade
    pravila preklapanja.

  • Pojednostavljeni postupak pokretanja sustava. Prethodno je sustav izgradnje već pokušao dinamički pronaći
    izgrađen re2c koji bi se mogao koristiti za obnovu samog sebe.
    To je dovelo do netočnih ovisnosti (jer je graf ovisnosti ispao
    dinamičan, što većina sustava za izgradnju ne voli).
    Sada, kako bi se ponovno izgradili lekseri, potrebno je eksplicitno
    konfigurirajte sustav izgradnje i postavite varijablu RE2C_FOR_BUILD.

Hvala svima koji su pridonijeli ovom izdanju!

Izvor: linux.org.ru

Dodajte komentar