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