Mandag den 20. juli blev re2c - generatoren af hurtige leksiske analyserere - udgivet.
Vigtige ændringer:
Understøttelse af sprog Go er tilføjet
(aktiveres enten med muligheden —lang go for re2c eller som et separat program re2go).
Dokumentationen for C og Go genereres ud fra den samme tekst, men med forskellige
kodeeksempler. Helfornyede kodet generationssystemet i re2c, hvilket
bør lette understøttelsen af nye sprog i fremtiden.-
Forsøg på at oversætte re2c til CMake har været gjort i lang tid, men før ligfx var der ingen,
der tilbød en komplet løsning.
Det gamle byggesystem på Autotools fortsætter med at blive understøttet og anvendt,
og der er ingen planer om at skifte fra det i den nærmeste fremtid (delvist for at undgå
problemer for distributionsudviklerne, delvist fordi det gamle byggesystem
er mere stabilt og kortfattet end det nye).
Begge systemer testes kontinuerligt med Travis CI. Muligheden for at angive grænsefladekode i konfigurationerne ved brug af
generisk API (generic API) er tilføjet. Tidligere skulle størstedelen af API’erne angives som
funktioner eller funktionelle makroer. Nu kan de angives som vilkårlige
strenge med navngivne skabelonparametre af typen @@{name} eller blot @@ (hvis
der kun er én parameter, og der ikke opstår tvetydighed). API-stilen angives med konfigurationen
re2c:api:style (værdien functions angiver funktionel stil, mens free-form angiver vilkårlig).Funktionen af optionen -c, —start-conditions, som muliggør sammensætning af flere
relaterede lexere i en re2c-blok, er blevet forbedret. Nu kan almindelige blokke bruges
sammen med betingede, og der kan angives flere ikke-relaterede betingede
blokke i én fil.
Funktionen af optionen -r, —reuse (genbrug af kode fra én blok
i andre blokke) er blevet forbedret sammen med optionerne -c, —start-conditions og -f, —storable-state
(lexer med gemt tilstand, som kan afbrydes på vilkårligt sted
og fortsættes senere).Der blev rettet en fejl i den nyligt tilføjede algoritme til behandling af slutningen af inputdata
(EOF-regel), som i sjældne tilfælde førte til forkert behandling af
overlappende regler.Bootstrapping-processen er blevet forenklet. Tidligere forsøgte byggesystemet dynamisk at finde den allerede
samlede re2c, som kunne bruges til at rekonstruere sig selv.
Dette førte til forkerte afhængigheder (da afhængighedsgrafen blev
dynamisk, hvilket de fleste byggesystemer ikke bryder sig om).
Nu kræves det eksplicit at
konfigurere byggesystemet og angive variablen RE2C_FOR_BUILD.
Tak til alle, der har deltaget i forberedelsen af denne udgivelse!
Kilde: linux.org.ru
