re2c 2.0

El lunes 20 de julio se lanzó el lanzamiento de re2c, un generador de analizador léxico rápido.
Cambios importantes:

  • Se agregó soporte para el idioma Go
    (habilitado con la opción --lang go para re2c, o como un programa independiente de re2go).
    La documentación para C and Go se genera a partir del mismo texto, pero con diferentes
    ejemplos de código El subsistema de generación de código en re2c ha sido completamente rediseñado, lo que
    debería facilitar la compatibilidad con nuevos idiomas en el futuro.

  • Se agregó un sistema de compilación alternativo en CMake (gracias ligfx!).
    Se han realizado intentos de traducir re2c a CMake durante mucho tiempo, pero antes de ligfx nadie
    ofreció una solución completa.
    El antiguo sistema de compilación en Autotools continúa siendo compatible y utilizado,
    y en un futuro previsible no hay planes para abandonarlo (en parte para no crear
    problemas para los desarrolladores de distribución, en parte porque el antiguo sistema de compilación
    más estable y conciso que el nuevo).
    Ambos sistemas se prueban igualmente de forma continua utilizando Travis CI.

  • Se agregó la capacidad de establecer el código de interfaz en las configuraciones cuando se usa
    API genérica (API genérica). Anteriormente, la mayoría de las API debían especificarse en el formulario
    funciones o macros de funciones. Ahora se pueden establecer en forma de arbitraria
    cadenas con parámetros de plantilla con nombre de la forma @@{nombre} o simplemente @@ (si
    solo hay un parámetro y no hay ambigüedad). El estilo API es configurable
    re2c:api:style (el valor de las funciones especifica el estilo funcional, mientras que el valor de forma libre es arbitrario).

  • Funcionamiento mejorado de la opción -c, --start-conditions, que permite combinar varias
    lexers interconectados en un bloque re2c. Ahora puedes usar
    bloques ordinarios a la par de los condicionales y establecer varios bloques condicionales no relacionados
    bloques en un archivo.
    Opciones -r, --reuse mejoradas (reutilización de código de un bloque
    en otros bloques) en combinación con las opciones -c, --start-conditions y -f, --storable-state
    (un lexer con estado que se puede interrumpir en una ubicación arbitraria
    y continuar la ejecución más tarde).

  • Se corrigió un error en el algoritmo recién agregado para manejar el final de los datos de entrada
    (regla EOF), que en casos raros condujo a un procesamiento incorrecto
    reglas superpuestas.

  • Proceso de arranque simplificado. Anteriormente, el sistema de compilación intentaba encontrar dinámicamente ya
    construido re2c que podría usarse para reconstruirse a sí mismo.
    Esto condujo a dependencias incorrectas (ya que el gráfico de dependencia resultó
    dinámico, que a la mayoría de los sistemas de compilación no les gusta).
    Ahora, para reconstruir lexers, se requiere explícitamente
    configure el sistema de compilación y establezca la variable RE2C_FOR_BUILD.

¡Gracias a todos los que contribuyeron a este lanzamiento!

Fuente: linux.org.ru

Añadir un comentario