O luns 20 de xullo lanzouse re2c, un xerador de analizadores léxicos rápidos.
Principais cambios:
-
Engadiuse compatibilidade con idiomas Go
(activado pola opción --lang go para re2c ou como un programa re2go separado).
A documentación para C e Go xérase a partir do mesmo texto, pero con diferente
exemplos de código. O subsistema de xeración de código en re2c foi completamente redeseñado, o que
debería facilitar o apoio ás novas linguas no futuro. -
Engadiuse un sistema de compilación alternativo para CMake (grazas ligfx!).
Os intentos de traducir re2c a CMake fixéronse durante moito tempo, pero antes de ligfx ninguén
ofrecía una solución completa.
O sistema de compilación antigo en Autotools segue sendo compatible e usándose,
e nun futuro previsible non hai plans para abandonalo (en parte para non crear
problemas para os desenvolvedores de distribución, en parte debido ao antigo sistema de compilación
máis estable e máis concisa que a nova).
Ambos sistemas son probados continuamente usando Travis CI. -
Engadida a posibilidade de establecer o código de interface nas configuracións ao usar
API xenérica. Anteriormente, a maioría das API tiñan que especificarse no formulario
funcións ou macros de funcións. Agora pódense especificar en forma de arbitrario
liñas con parámetros de modelo nomeados como @@{nome} ou só @@ (se
só hai un parámetro e non hai ambigüidade). O estilo da API é especificado pola configuración
re2c:api:style (o valor das funcións especifica un estilo funcional e free-form especifica un estilo arbitrario). -
Mellorouse o funcionamento da opción -c, --start-conditions, o que lle permite combinar varias
Lexers interconectados nun bloque re2c. Agora podes usar
bloques regulares xunto cos condicionais e especifique varios condicionais non relacionados
bloques nun ficheiro.
Funcionamento mellorado da opción -r, --reuse (reutilización de código dun bloque
noutros bloques) en combinación coas opcións -c, --start-conditions e -f, --storable-state
(un lexer con estado que se pode interromper en calquera punto
e continuar coa execución máis tarde). -
Corrixiuse un erro no algoritmo de fin de entrada engadido recentemente
(regra EOF), que en casos raros levou a un procesamento incorrecto
regras superpostas. -
Simplificouse o proceso de arranque. Anteriormente, o sistema de compilación xa intentou atopar de forma dinámica
unha compilación re2c que podería usarse para reconstruírse.
Isto deu lugar a dependencias incorrectas (xa que o gráfico de dependencias era
dinámica, que á maioría dos sistemas de compilación non gusta).
Agora, para reconstruír lexers, cómpre facelo de forma explícita
configure o sistema de compilación e configure a variable RE2C_FOR_BUILD.
Grazas a todos os que participaron na preparación deste lanzamento!
Fonte: linux.org.ru