re2c 1.2

Fredag ​​2. august ble utgivelsen av re2c, en gratis generator av leksikale analysatorer for C- og C++-språkene, utgitt. Re2c ble skrevet i 1993 av Peter Bamboulis som en eksperimentell generator av veldig raske leksikale analysatorer, skilt fra andre generatorer ved hastigheten til den genererte koden og et uvanlig fleksibelt brukergrensesnitt som gjør at analysatorer enkelt og effektivt kan bygges inn i en eksisterende kodebase. Siden den gang har prosjektet blitt utviklet av samfunnet og fortsetter å være en plattform for eksperimenter og forskning innen formell grammatikk og endelige tilstandsmaskiner.

Hovedinnovasjoner i versjon 1.2:

  • Lagt til en ny (forenklet) måte å se etter slutten av inndataene
    (engelsk "EOF-regel").
    For dette er re2c:eof-konfigurasjonen lagt til,
    lar deg velge terminaltegnet,
    og en spesiell $-regel som avfyres hvis lexeren
    nådd slutten av inndataene.
    Historisk gir re2c et valg mellom flere verifiseringsmetoder for
    slutten av innganger som varierer i begrensning, effektivitet og enkelhet
    applikasjoner. Den nye metoden er designet for å forenkle skriving av kode, mens
    samtidig som den forblir effektiv og allment anvendelig. Gamle måter
    fungerer fortsatt og kan være foretrukket i noen tilfeller.

  • Lagt til muligheten til å inkludere eksterne filer ved hjelp av et direktiv
    /*!include:re2c "file.re" */ hvor file.re
    dette er navnet på include-filen. Re2c ser etter filer i den inkluderte filkatalogen,
    så vel som i listen over stier spesifisert ved bruk av -I-alternativet.
    Inkluderte filer kan inkludere andre filer.
    Re2c gir "standard" filer i include/-katalogen
    prosjekt - det forventes at nyttige definisjoner vil samle seg der
    regulære uttrykk, noe sånt som standardbiblioteket.
    Så langt, på forespørsel fra arbeidere, er det lagt til én fil med definisjoner av Unicode-kategorier.

  • Lagt til muligheten til å generere header-filer med vilkårlig
    innhold ved å bruke -t --type-header-alternativene (eller passende
    konfigurasjoner) og nye direktiver /*!header:re2c:on*/ og
    /*!header:re2c:off*/. Dette kan være nyttig i tilfeller der
    når re2c trenger å generere definisjoner av variabler, strukturer og makroer,
    brukes i andre oversettelsesenheter.

  • Re2c forstår nå UTF8 bokstaver og karakterklasser i regulære uttrykk.
    Som standard analyserer re2c uttrykk som "∀x ∃y" som.
    sekvens av 1-bits ASCII-tegn e2 88 80 78 20 e2 88 83 79
    (hex-koder), og brukere må unnslippe Unicode-tegn manuelt:
    "u2200x u2203y". Dette er svært upraktisk og uventet for mange
    brukere (som det fremgår av konstante feilrapporter). Så nå
    re2c gir et --input-encoding alternativ ,
    som lar deg endre atferden og analysere "∀x ∃y" som
    2200 78 20 2203 79.

  • Re2c tillater nå bruk av vanlige re2c-blokker i -r --reuse-modus.
    Dette er praktisk hvis inndatafilen inneholder mange blokker og bare noen av dem
    må gjenbrukes.

  • Nå kan du angi formatet for advarsler og feilmeldinger
    ved å bruke det nye alternativet --location-format . GNU-formatet vises
    som filnavn:linje:kolonne:, og MSVC-formatet som filnavn(linje,kolonne).
    Denne funksjonen kan være nyttig for IDE-elskere.
    Et --verbose-alternativ er også lagt til, som skriver ut en kort seiermelding hvis den lykkes.

  • "Kompatibilitet"-modusen med flex har blitt forbedret - noen parsefeil er fikset og
    feil operatørprioritet i sjeldne tilfeller.
    Historisk sett tillot alternativet -F --flex-support deg å skrive kode
    blandet i flex-stil og re2c-stil, noe som gjør parsing litt vanskelig.
    Flex-kompatibilitetsmodus brukes sjelden i ny kode,
    men re2c fortsetter å støtte det for bakoverkompatibilitet.

  • Tegnklassen subtraksjonsoperatør / gjelder nå
    før du utvider kodingen, noe som gjør at den kan brukes i et større antall tilfeller,
    hvis en koding med variabel tegnlengde brukes (for eksempel UTF8).

  • Utdatafilen er nå opprettet atomisk: re2c oppretter først en midlertidig fil
    og skriver resultatet inn i den, og gir deretter nytt navn til den midlertidige filen til utdata
    én operasjon.

  • Dokumentasjonen ble ferdigstilt og skrevet om; spesielt ble det lagt til nye
    kapitler om å fylle bufferen
    и om måter å se etter slutten av inndata.
    Den nye dokumentasjonen er samlet i skjemaet
    en omfattende en-sides manual
    med eksempler (de samme kildene er gjengitt i manpage og i nettdokumentasjonen).
    Det er gjort dårlige forsøk på å forbedre lesbarheten til nettstedet på telefoner.

  • Fra utviklernes synspunkt har re2c anskaffet et mer komplett delsystem
    feilsøking Feilsøkingskode er nå deaktivert i utgivelsesbygg og
    kan aktiveres ved å bruke konfigureringsalternativet --enable-debug.

Denne utgivelsen tok lang tid – nesten et helt år.
Mesteparten av tiden ble som alltid brukt på å utvikle et teoretisk rammeverk og skrive
artikler "Effektiv POSIX Submatch Extraction på NFA".
Algoritmene beskrevet i artikkelen er implementert i det eksperimentelle biblioteket libre2c
(å bygge biblioteket og benchmarks er deaktivert som standard og er aktivert av konfigureringsalternativet
--enable-libs). Biblioteket er ikke tenkt som en konkurrent til eksisterende
prosjekter som RE2, men som en forskningsplattform for utvikling av nye
algoritmer (som deretter kan brukes i re2c eller i andre prosjekter).
Det er også praktisk med tanke på testing, benchmarks og opprette bindinger til andre språk.

Takk fra re2c-utviklerne til alle som hjalp denne utgivelsen,
og til fellesskapet generelt for ideer, feilrapporter, oppdateringer, moral osv. ;]

Kilde: linux.org.ru

Legg til en kommentar