re2c 2.0

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

Legg til en kommentar