re2c 2.0

V ponedeljek, 20. julija, je izšel re2c, generator hitrega slovarskega analizatorja.
Večje spremembe:

  • Dodana podpora za jezik Go
    (omogočeno z možnostjo --lang go za re2c ali kot ločen program re2go).
    Dokumentacija za C in Go je ustvarjena iz istega besedila, vendar z različnim
    primeri kode. Podsistem za generiranje kode v re2c je bil popolnoma preoblikovan, kar
    naj bi olajšalo podporo novim jezikom v prihodnosti.

  • Dodan alternativni gradbeni sistem za CMake (hvala ligfx!).
    Poskusi prevajanja re2c v CMake so potekali že dolgo, vendar pred ligfx nihče
    ponudil celovito rešitev.
    Stari sistem gradnje Autotools je še naprej podprt in uporabljen,
    in v bližnji prihodnosti ni načrtov, da bi ga opustili (delno zato, da ne bi ustvarili
    težave za razvijalce distribucije, deloma zaradi starega sistema gradnje
    stabilnejši in bolj jedrnat kot novi).
    Oba sistema se nenehno testirata s Travis CI.

  • Dodana možnost nastavitve kode vmesnika v konfiguracijah pri uporabi
    generični API. Prej je bilo treba večino API-jev navesti v obrazcu
    funkcij ali funkcijskih makrov. Zdaj jih je mogoče določiti v poljubni obliki
    vrstice z imenovanimi parametri predloge, kot je @@{name} ali samo @@ (če
    obstaja samo en parameter in ni dvoumnosti). Slog API-ja je določen s konfiguracijo
    re2c:api:style (vrednost funkcij določa funkcionalni slog, prosta oblika pa poljuben slog).

  • Delovanje možnosti -c, --start-conditions je bilo izboljšano, kar vam omogoča kombiniranje več
    med seboj povezani lekserji v enem bloku re2c. Zdaj lahko uporabite
    navadne bloke skupaj s pogojnimi in določi več nepovezanih pogojnih
    blokov v eni datoteki.
    Izboljšano delovanje možnosti -r, --reuse (ponovna uporaba kode iz enega bloka
    v drugih blokih) v kombinaciji z možnostma -c, --start-conditions in -f, --storable-state
    (lekser s stanjem, ki ga je mogoče kadar koli prekiniti
    in nadaljujte z izvedbo pozneje).

  • Odpravljena je napaka v nedavno dodanem algoritmu za konec vnosa
    (pravilo EOF), kar je v redkih primerih povzročilo nepravilno obdelavo
    pravila prekrivanja.

  • Postopek zagona je poenostavljen. Prej je sistem gradnje že poskušal dinamično najti
    zgradba re2c, ki bi se lahko uporabila za obnovo samega sebe.
    To je povzročilo nepravilne odvisnosti (ker je bil graf odvisnosti
    dinamično, kar večini gradbenih sistemov ni všeč).
    Če želite znova zgraditi lekserje, morate izrecno
    konfigurirajte gradbeni sistem in nastavite spremenljivko RE2C_FOR_BUILD.

Hvala vsem, ki ste sodelovali pri pripravi te objave!

Vir: linux.org.ru

Dodaj komentar