V ponedeljek, 20. julija, je izšla različica re2c – generatorja hitrih leksikalnih analizatorjev.
Glavne spremembe:
Dodana podpora za programski jezik Go
(vklopi se z opcijo —lang go za re2c ali kot ločen program re2go).
Dokumentacija za C in Go se generira iz istega besedila, a z različnimi
primeri kode. Podges je bil povsem prenovljen sistem za generacijo kode v re2c, kar
bi moralo poenostaviti podporo novim jezikom v prihodnosti.-
Poskusi, da bi re2c prenesli na CMake, so se dogajali že dolgo, toda do ligfx še
ni bilo ničesar, kar bi ponudilo celovito rešitev.
Stari sistem gradnje na Autotools se še naprej podpira in uporablja,
in v bližnji prihodnosti ni načrtov, da bi se te opustilo (delno, da ne bi povzročali
težav razvijalcem distribucij, delno pa zato, ker je stari sistem gradnje
stabilnejši in bolj pregleden od novega).
Oba sistema sta enako neprekinjeno testirana s pomočjo Travis CI. Dodana je možnost določanja vmesniškega kode v konfiguracijah z uporabo
generičnega API (generic API). Prej je bilo večino API-jev treba določiti v obliki
funkcij ali funkcionalnih makrov. Zdaj jih je mogoče določiti v obliki poljubnih
nizov z imenovanimi predlogami parametrov, kot sta @@{name} ali preprosto @@ (če
je parameter eden in ni zmede). Stil API-jev določa konfiguracija
re2c:api:style (vrednost functions določa funkcionalni slog, medtem ko free-form – poljubni).Izboljšano delovanje opcije -c, —start-conditions, ki omogoča združevanje več
povezanih leksikalnih analizatorjev v enem re2c-bloku. Zdaj lahko uporabite
običajne bloke skupaj s pogojnimi in določate več nepovezanih pogojnih
blokov v enem dokumentu.
Izboljšano delovanje opcije -r, —reuse (ponovno uporabo kode iz enega bloka
v drugih blokih) v kombinaciji z opcijami -c, —start-conditions in -f, —storable-state
(leksikalni analizator s shranjenim stanjem, ki ga je mogoče prekiniti na poljubnem mestu
in nadaljevati kasneje).Odpravljena je napaka v nedavno dodanem algoritmu za obdelavo konca vhodnih podatkov
(EOF rule), ki je v redkih primerih vodila do napačne obdelave
prekrivajočih se pravil.Poenostavljen je postopek zagon programske kode. Pred tem je sistem gradnje poskušal dinamično najti že
zgrajen re2c, ki bi ga bilo mogoče uporabiti za ponovno gradnjo samega sebe.
To je vodilo do napačnih odvisnosti (ker je graf odvisnosti postal
dinamičen, česar večina sistemov za sestavljanje ne mara).
Zdaj je potrebno izrecno
konfigurirati sistem za sestavljanje in nastaviti spremenljivko RE2C_FOR_BUILD.
Hvala vsem, ki so sodelovali pri pripravi te različice!
Izvor: linux.org.ru
