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