Mandag 20. juli ble re2c, en rask leksikalsk analysatorgenerator, utgitt.
Hovedendringer:
-
Lagt til Go-språkstøtte
(aktivert enten av --lang go-alternativet for re2c, eller som et separat re2go-program).
Dokumentasjon for C og Go er generert fra samme tekst, men med forskjellig
kodeeksempler. Kodegenereringsundersystemet i re2c har blitt fullstendig redesignet, som
skal gjøre det lettere å støtte nye språk i fremtiden. -
Lagt til et alternativt byggesystem for CMake (takk ligfx!).
Forsøk på å oversette re2c til CMake har vært gjort i lang tid, men før ligfx ingen
tilbudt en komplett løsning.
Det gamle byggesystemet på Autotools fortsetter å bli støttet og brukt,
og i overskuelig fremtid er det ingen planer om å forlate det (delvis for ikke å skape
problemer for distribusjonsutviklere, blant annet på grunn av det gamle byggesystemet
mer stabil og mer konsis enn den nye).
Begge systemene testes kontinuerlig med Travis CI. -
Lagt til muligheten til å angi grensesnittkode i konfigurasjoner ved bruk
generisk API. Tidligere måtte de fleste API-er spesifiseres i skjemaet
funksjoner eller funksjonsmakroer. Nå kan de spesifiseres i form av vilkårlige
linjer med navngitte malparametere som @@{navn} eller bare @@ (hvis
det er bare én parameter og det er ingen tvetydighet). API-stilen er spesifisert av konfigurasjonen
re2c:api:style (funksjonsverdien spesifiserer en funksjonell stil, og fri form spesifiserer en vilkårlig stil). -
Driften av alternativet -c, --start-betingelser er forbedret, slik at du kan kombinere flere
sammenkoblede lexere i en re2c-blokk. Nå kan du bruke
vanlige blokker sammen med betingede blokker og spesifiser flere ikke-relaterte betingede
blokker i én fil.
Forbedret drift av -r, --reuse-alternativet (gjenbruk av kode fra en blokk
i andre blokker) i kombinasjon med alternativene -c, --startbetingelser og -f, --lagringstilstand
(en stateful lexer som kan avbrytes når som helst
og fortsett utførelse senere). -
Rettet en feil i den nylig lagt til end-of-input-algoritmen
(EOF-regelen), som i sjeldne tilfeller førte til feilbehandling
overlappende regler. -
Bootstrap-prosessen er forenklet. Tidligere prøvde byggesystemet å finne dynamisk allerede
en re2c-bygning som kan brukes til å gjenoppbygge seg selv.
Dette resulterte i ukorrekte avhengigheter (siden avhengighetsgrafen var
dynamisk, som de fleste byggesystemer ikke liker).
Nå, for å gjenoppbygge lexers, må du eksplisitt
konfigurer byggesystemet og angi RE2C_FOR_BUILD-variabelen.
Takk til alle som deltok i utarbeidelsen av denne utgivelsen!
Kilde: linux.org.ru