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