re2c 2.0

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

Adicionar um comentário