re2c 1.2

El divendres 2 d'agost es va llançar el llançament de re2c, un generador gratuït d'analitzadors lèxics per als llenguatges C i C++. Re2c va ser escrit l'any 1993 per Peter Bamboulis com un generador experimental d'analitzadors lèxics molt ràpids, que es distingeix d'altres generadors per la velocitat del codi generat i una interfície d'usuari inusualment flexible que permet integrar els analitzadors de manera fàcil i eficient en una base de codi existent. Des de llavors, el projecte ha estat desenvolupat per la comunitat i continua sent una plataforma per a experiments i investigacions en el camp de les gramàtiques formals i les màquines d'estats finits.

Principals innovacions a la versió 1.2:

  • S'ha afegit una nova manera (simplificada) de comprovar el final de les dades d'entrada
    («Regla EOF» en anglès).
    Per a això, s'ha afegit la configuració re2c:eof,
    us permet seleccionar el caràcter terminal,
    i una regla especial de $ que es dispara si el lexer
    ha arribat correctament al final de les dades d'entrada.
    Històricament, re2c ofereix una selecció de diversos mètodes de verificació
    final de les entrades que varien en limitació, eficiència i simplicitat
    aplicacions. El nou mètode està dissenyat per simplificar l'escriptura de codi, mentre
    mentre segueix sent eficaç i àmpliament aplicable. Velles maneres
    encara funciona i pot ser preferit en alguns casos.

  • S'ha afegit la possibilitat d'incloure fitxers externs mitjançant una directiva
    /*!include:re2c "fitxer.re" */ on fitxer.re
    aquest és el nom del fitxer d'inclusió. Re2c cerca fitxers al directori de fitxers inclosos,
    així com a la llista de camins especificats mitjançant l'opció -I.
    Els fitxers inclosos poden incloure altres fitxers.
    Re2c proporciona fitxers "estàndard" al directori include/
    projecte: s'espera que s'acumulin definicions útils
    expressions regulars, com la biblioteca estàndard.
    Fins ara, a petició dels treballadors, s'ha afegit un fitxer amb definicions de categories Unicode.

  • S'ha afegit la possibilitat de generar fitxers de capçalera amb arbitrari
    contingut utilitzant les opcions -t --type-header (o adequades
    configuracions) i noves directives /*!header:re2c:on*/ i
    /*!header:re2c:off*/. Això pot ser útil en els casos en què
    quan re2c necessita generar definicions de variables, estructures i macros,
    utilitzat en altres unitats de traducció.

  • Re2c ara entén els literals UTF8 i les classes de caràcters en expressions regulars.
    Per defecte, re2c analitza expressions com "∀x ∃y" com.
    seqüència de caràcters ASCII d'1 bit e2 88 80 78 20 e2 88 83 79
    (codis hexadecimals) i els usuaris han d'escapar els caràcters Unicode manualment:
    "u2200x u2203y". Això és molt incòmode i inesperat per a molts
    usuaris (com ho demostren els informes d'errors constants). Així que ara
    re2c proporciona una opció --input-encoding ,
    que us permet canviar el comportament i analitzar "∀x ∃y" com
    2200 78 20 2203 79.

  • Re2c ara permet l'ús de blocs re2c normals en mode -r --reuse.
    Això és convenient si el fitxer d'entrada conté molts blocs i només alguns d'ells
    cal reutilitzar.

  • Ara podeu configurar el format dels avisos i missatges d'error
    utilitzant la nova opció --location-format . Es mostra el format GNU
    com a nom de fitxer:línia:columna: i el format MSVC com a nom de fitxer (línia,columna).
    Aquesta característica pot ser útil per als amants de l'IDE.
    També s'ha afegit una opció --verbose, que imprimeix un breu missatge de victòria si té èxit.

  • S'ha millorat el mode de "compatibilitat" amb flex: s'han corregit alguns errors d'anàlisi i
    precedència incorrecta de l'operador en casos excepcionals.
    Històricament, l'opció -F --flex-support us permetia escriure codi
    barrejat en estil flex i estil re2c, cosa que dificulta una mica l'anàlisi.
    El mode de compatibilitat Flex rarament s'utilitza en el codi nou,
    però re2c continua donant suport per a la compatibilitat enrere.

  • Ara s'aplica l'operador de resta de classe de caràcters /
    abans d'ampliar la codificació, la qual cosa permet utilitzar-la en un nombre més gran de casos,
    si s'utilitza una codificació de longitud de caràcter variable (per exemple, UTF8).

  • El fitxer de sortida ara es crea atòmicament: re2c crea primer un fitxer temporal
    i hi escriu el resultat, i després canvia el nom del fitxer temporal a la sortida
    una operació.

  • La documentació es va completar i reescriure; en particular, se'n van afegir de nous
    capítols sobre omplir el buffer
    и sobre les maneres de comprovar el final de les dades d'entrada.
    La nova documentació es recull en el formulari
    un manual complet d'una pàgina
    amb exemples (les mateixes fonts es representen a la pàgina de manual i a la documentació en línia).
    S'han fet mals intents per millorar la llegibilitat del lloc als telèfons.

  • Des del punt de vista dels desenvolupadors, re2c ha adquirit un subsistema més complet
    depuració El codi de depuració ara està desactivat a les versions de versions i
    es pot activar mitjançant l'opció de configuració --enable-debug.

Aquest llançament va trigar molt de temps, gairebé un any sencer.
La major part del temps, com sempre, es dedicava a desenvolupar un marc teòric i escriure
Article "Extracció eficient de subpartides POSIX a NFA".
Els algorismes descrits a l'article estan implementats a la biblioteca experimental libre2c
(la creació de la biblioteca i els punts de referència està desactivada per defecte i s'habilita amb l'opció de configuració
--enable-libs). La biblioteca no està concebuda com a competidora de l'existència
projectes com RE2, sinó com a plataforma de recerca per al desenvolupament de nous
algorismes (que després es poden utilitzar en re2c o en altres projectes).
També és convenient des del punt de vista de proves, benchmarks i creació d'enllaços a altres idiomes.

Gràcies dels desenvolupadors de re2c a tots els que han ajudat a que aquest llançament es produeixi,
i a la comunitat en general per obtenir idees, informes d'errors, pegats, moral, etc. ;]

Font: linux.org.ru

Afegeix comentari