re2c 2.0

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.

  • En alternativ byggesystem på CMake er tilføjet (tak ligfx!).


    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

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster