re2c 2.0

Mandag den 20. juli blev udgivelsen af ​​re2c, en hurtig leksikalsk analysatorgenerator, frigivet.
Vigtigste ændringer:

  • Tilføjet understøttelse af Go-sprog
    (aktiveret enten med --lang go-indstillingen for re2c, eller som et selvstændigt re2go-program).
    Dokumentationen for C og Go er genereret ud fra den samme tekst, men med forskellig
    kodeeksempler. Kodegenereringsundersystemet i re2c er blevet fuldstændig redesignet, hvilket
    skal gøre det lettere at understøtte nye sprog i fremtiden.

  • Tilføjet alternativt byggesystem på CMake (tak ligfx!).
    Forsøg på at oversætte re2c til CMake har været gjort i lang tid, men før ligfx ingen
    tilbudt en komplet løsning.
    Det gamle byggesystem på Autotools bliver fortsat understøttet og brugt,
    og i en overskuelig fremtid er der ingen planer om at opgive det (delvis for ikke at skabe
    problemer for distributionsudviklere, blandt andet på grund af det gamle byggesystem
    mere stabil og kortfattet end den nye).
    Begge systemer testes lige kontinuerligt med Travis CI.

  • Tilføjet muligheden for at indstille grænsefladekoden i konfigurationer ved brug
    generisk API (generisk API). Tidligere skulle de fleste API'er angives i formularen
    funktioner eller funktionsmakroer. Nu kan de sættes i form af vilkårlige
    strenge med navngivne skabelonparametre af formen @@{navn} eller bare @@ (hvis
    der er kun én parameter, og der er ingen tvetydighed). API-stil kan konfigureres
    re2c:api:style (funktionsværdien angiver den funktionelle stil, mens værdien i fri form er vilkårlig).

  • Forbedret betjening af indstillingen -c, --start-betingelser, som giver dig mulighed for at kombinere flere
    sammenkoblede lexere i én re2c blok. Nu kan du bruge
    almindelige blokke på lige fod med betingede og sæt flere ubeslægtede betingede
    blokke i én fil.
    Forbedrede -r, --reuse muligheder (genbrug af kode fra en blok
    i andre blokke) i kombination med indstillingerne -c, --startbetingelser og -f, --storable-state
    (en stateful lexer, der kan afbrydes på et vilkårligt sted
    og fortsæt udførelsen senere).

  • Rettede en fejl i den nyligt tilføjede algoritme til håndtering af slutningen af ​​inputdata
    (EOF-reglen), hvilket i sjældne tilfælde førte til ukorrekt behandling
    overlappende regler.

  • Forenklet bootstrap-proces. Tidligere forsøgte byggesystemet at finde dynamisk allerede
    bygget re2c, der kunne bruges til at genopbygge sig selv.
    Dette førte til forkerte afhængigheder (fordi afhængighedsgrafen viste sig
    dynamisk, som de fleste byggesystemer ikke kan lide).
    Nu, for at genopbygge lexers, kræves det eksplicit
    konfigurer byggesystemet og indstil variablen RE2C_FOR_BUILD.

Tak til alle, der har bidraget til denne udgivelse!

Kilde: linux.org.ru

Tilføj en kommentar