Na segunda-feira, 20 de julho, foi lançado o lançamento do re2c, um gerador rápido de analisador léxico.
Grandes mudanças:
-
Adicionado suporte para a linguagem Go
(ativado com a opção --lang go para re2c ou como um programa re2go autônomo).
A documentação para C e Go é gerada a partir do mesmo texto, mas com diferentes
exemplos de código. O subsistema de geração de código no re2c foi completamente redesenhado, o que
deve facilitar o suporte a novos idiomas no futuro. -
Adicionado sistema de compilação alternativo no CMake (obrigado lifx!).
Tentativas de traduzir re2c para CMake foram feitas por um longo tempo, mas antes de lifx ninguém
ofereceu uma solução completa.
O antigo sistema de compilação no Autotools continua a ser suportado e usado,
e no futuro próximo não há planos de abandoná-lo (em parte para não criar
problemas para desenvolvedores de distribuição, em parte porque o antigo sistema de compilação
mais estável e conciso que o novo).
Ambos os sistemas são igualmente testados continuamente usando o Travis CI. -
Adicionada a capacidade de definir o código da interface nas configurações ao usar
API genérica (API genérica). Anteriormente, a maioria das APIs precisava ser especificada no formato
funções ou macros de funções. Agora eles podem ser definidos na forma arbitrária
strings com parâmetros de modelo nomeados no formato @@{name} ou apenas @@ (se
há apenas um parâmetro e não há ambigüidade). O estilo da API é configurável
re2c:api:style (o valor de funções especifica o estilo funcional, enquanto o valor de forma livre é arbitrário). -
Operação aprimorada da opção -c, --start-conditions, que permite combinar vários
Lexers interconectados em um bloco re2c. Agora você pode usar
blocos comuns em pé de igualdade com os condicionais e definir vários blocos condicionais não relacionados
blocos em um arquivo.
Opções -r, --reuse aprimoradas (reutilização de código de um bloco
em outros blocos) em combinação com as opções -c, --start-conditions e -f, --storable-state
(um lexer com estado que pode ser interrompido em um local arbitrário
e continuar a execução mais tarde). -
Corrigido um bug no algoritmo recém-adicionado para lidar com o fim dos dados de entrada
(regra EOF), que em casos raros levou ao processamento incorreto
regras sobrepostas. -
Processo de bootstrap simplificado. Anteriormente, o sistema de construção tentava localizar dinamicamente
construído re2c que poderia ser usado para reconstruir a si mesmo.
Isso levou a dependências incorretas (porque o gráfico de dependência acabou
dinâmico, que a maioria dos sistemas de construção não gosta).
Agora, para reconstruir os lexers, é necessário explicitamente
configure o sistema de compilação e defina a variável RE2C_FOR_BUILD.
Obrigado a todos que contribuíram para este lançamento!
Fonte: linux.org.ru