Publicado o martes 19 de novembro re2c – un xerador de analizadores léxicos (tamén un compilador de expresións regulares en código na linguaxe de programación de destino). re2c está especializado en xerar lexers en liña rápidos e sinxelos. Diferénciase da súa flex analóxica máis coñecida na súa interface flexible, a xeración de lexers non tabulares optimizados e o soporte para a extracción de subconcordancia baseada en máquinas de estados finitos deterministas con etiquetas (TDFA). re2c úsase en proxectos onde a velocidade do lexer é importante, por exemplo en Ninja e PHP.
Na versión 4.0, o subsistema de xeración de código foi redeseñado radicalmente, o que permitiu engadir soporte para oito novos idiomas (D, Haskell, Java, JavaScript, OCaml, Python, V, Zig) ademais dos xa compatibles (C /C++, Go, Rust), así como un mecanismo xeral para engadir novos idiomas mediante ficheiros de configuración. O xerador de código encárgase de traducir a código unha máquina de estados finitos xa construída e optimizada, é dicir, a súa tarefa é seleccionar as construcións de control, os tipos de datos, o modelo xeral do programa, etc. que sexan axeitados para a lingua de destino. Antes, toda esta lóxica formaba parte do código fonte de re2c e, para cambialo ou engadir un novo idioma, había que parchear o código fonte e reconstruír o re2c. Estes parches non foron aceptados no repositorio principal sen implementar un conxunto estándar de exemplos e probas, o que complicou aínda máis todo o proceso. Agora toda esta lóxica foi transferida ficheiros de sintaxe – ficheiros de configuración de texto que pode proporcionar o usuario (re2c usa os estándares por defecto). O código fonte re2c está completamente libre de detalles específicos da linguaxe e só depende do ficheiro de sintaxe. O usuario pode anular parcialmente un ficheiro de sintaxe existente ou escribir un novo desde cero. Para todas as linguas admitidas oficialmente hai documentación completa con exemplos.
Por certo, a idea mesma dos ficheiros de sintaxe xurdiu grazas a un comentario en ENT, grazas por iso
o_codificador.
A versión incluíu moitos outros cambios para simplificar a interface de usuario, mellorar o traballo coa captura de grupos e tamén engadiu un ambiente en liña para editar e compilar exemplos: http://re2c.org/playground.
Fonte: linux.org.ru
