re2c 2.0

Na segunda-feira, 20 de julho, foi lançado o re2c – gerador de analisadores lexicais rápidos.
Principais mudanças:

  • Suporte adicionado para a linguagem Go
    (ativado ou pela opção —lang go para re2c, ou como um programa separado re2go).
    A documentação para C e Go é gerada a partir do mesmo texto, mas com diferentes
    exemplos de código. Todo o subsistema de geração de código no re2c foi
    totalmente reestruturado, o que

  • deve facilitar o suporte para novas linguagens no futuro. Uma alternativa de sistema de compilação usando CMake foi adicionada (obrigado!).


    ligfx
    Tentativas de portar o re2c para CMake já foram feitas há muito tempo, mas até ligfx ninguém
    ofereceu uma solução completa.
    O antigo sistema de compilação em Autotools continua sendo mantido e utilizado,
    e não há planos imediatos de abandoná-lo (em parte para não criar
    problemas para os desenvolvedores de distribuições, em parte porque o antigo sistema de compilação
    é mais estável e conciso do que o novo).
  • Ambos os sistemas são continuamente testados com Travis CI.
    Agora é possível especificar o código de interface nas configurações ao usar
    APIs genéricas. Anteriormente, a maioria das APIs tinha que ser definidas na forma de
    funções ou macros funcionais. Agora elas podem ser definidas na forma de strings arbitrárias
    com parâmetros de modelo nomeados no formato @@{name} ou simplesmente @@ (se
    houver apenas um parâmetro e não houver ambiguidade). O estilo da API é definido pela configuração

  • re2c:api:style (o valor functions define um estilo funcional, enquanto free-form – um estilo livre).
    Melhorias foram feitas na opção -c, —start-conditions, que permite combinar várias
    analisadores lexicais inter-relacionados em um único bloco re2c. Agora é possível usar
    blocos normais junto com condicionais e definir vários blocos condicionais não relacionados
    em um único arquivo.
    A funcionalidade da opção -r, —reuse (reutilização de código de um bloco
    em outros blocos) foi aprimorada em combinação com as opções -c, —start-conditions e -f, —storable-state
    (um analisador lexical com estado armazenável, que pode ser interrompido em qualquer ponto

  • e continuar a execução posteriormente).
    Um erro no algoritmo recentemente adicionado para o tratamento do fim dos dados de entrada
    (regra EOF), que em casos raros causava um processamentos incorreto

  • de regras sobrepostas foi corrigido.
    O processo de bootstrap foi simplificado. Antes, o sistema de compilação tentava encontrar dinamicamente uma versão já compilada do re2c que pudesse ser usada para recompilar a si mesma.
    Isso resultou em dependências incorretas (já que o gráfico de dependências se tornava
    dinâmico, o que a maioria dos sistemas de construção não aprecia).
    Agora, para recompilar os lexers, é necessário configurar explicitamente
    o sistema de construção e definir a variável RE2C_FOR_BUILD.

Obrigado a todos que participaram da preparação deste lançamento!

Fonte: linux.org.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster