re2c 2.0

Lunedì 20 luglio è stato rilasciato il rilascio di re2c, un veloce generatore di analizzatore lessicale.
Principali modifiche:

  • Aggiunto il supporto per la lingua Go
    (abilitato con l'opzione --lang go per re2c, o come programma re2go autonomo).
    La documentazione per C and Go è generata dallo stesso testo, ma con differenti
    esempi di codice. Il sottosistema di generazione del codice in re2c è stato completamente riprogettato, che
    dovrebbe facilitare il supporto di nuove lingue in futuro.

  • Aggiunto sistema di compilazione alternativo su CMake (grazie ligfx!).
    I tentativi di tradurre re2c in CMake sono stati fatti per molto tempo, ma prima di ligfx nessuno
    offerto una soluzione completa.
    Il vecchio sistema di compilazione su Autotools continua ad essere supportato e utilizzato,
    e nel prossimo futuro non ci sono piani per abbandonarlo (in parte per non creare
    problemi per gli sviluppatori della distribuzione, in parte a causa del vecchio sistema di compilazione
    più stabile e conciso del nuovo).
    Entrambi i sistemi vengono ugualmente testati continuamente utilizzando Travis CI.

  • Aggiunta la possibilità di impostare il codice dell'interfaccia nelle configurazioni durante l'utilizzo
    API generica (API generica). In precedenza, la maggior parte delle API doveva essere specificata nel modulo
    funzioni o macro di funzioni. Ora possono essere impostati sotto forma di arbitrario
    stringhe con parametri di modello denominati nella forma @@{name} o solo @@ (if
    c'è un solo parametro e non c'è ambiguità). Lo stile dell'API è configurabile
    re2c:api:style (il valore functions specifica lo stile funzionale, mentre il valore free-form è arbitrario).

  • Migliorato il funzionamento dell'opzione -c, --start-conditions, che consente di combinarne diverse
    lexer interconnessi in un blocco re2c. Ora puoi usare
    blocchi ordinari alla pari di quelli condizionali e impostare diversi condizionali non correlati
    blocchi in un unico file.
    Opzioni -r, --reuse migliorate (riutilizzo del codice da un blocco
    in altri blocchi) in combinazione con le opzioni -c, --start-conditions e -f, --storable-state
    (un lexer con stato che può essere interrotto in una posizione arbitraria
    e continuare l'esecuzione più tardi).

  • Risolto un bug nell'algoritmo appena aggiunto per la gestione della fine dei dati di input
    (regola EOF), che in rari casi ha portato a un'elaborazione errata
    regole sovrapposte.

  • Processo di bootstrap semplificato. In precedenza, il sistema di compilazione tentava già di trovare dinamicamente
    costruito re2c che potrebbe essere usato per ricostruire se stesso.
    Ciò ha portato a dipendenze errate (perché il grafico delle dipendenze è risultato
    dinamico, che alla maggior parte dei sistemi di compilazione non piace).
    Ora, per ricostruire i lexer, è richiesto esplicitamente
    configurare il sistema di compilazione e impostare la variabile RE2C_FOR_BUILD.

Grazie a tutti coloro che hanno contribuito a questa versione!

Fonte: linux.org.ru

Aggiungi un commento