re2c 2.0

Lunedì 20 luglio è stata rilasciata la versione di re2c – generatore di analizzatori lessicali veloci.
Variazioni principali:

  • Aggiunta la supporto per il linguaggio Go
    (attivabile con l'opzione —lang go per re2c, oppure come programma separato re2go).
    La documentazione per C e Go è generata dallo stesso testo, ma con esempi di codice diversi.
    È stata completamente riprogettata la sottosistema di generazione del codice in re2c, il che
    dovrebbe facilitare il supporto per nuovi linguaggi in futuro.

  • Aggiunto un sistema di costruzione alternativo su CMake (grazie a ligfx!).


    Le tentativi di portare re2c su CMake sono state fatte da tempo, ma fino a ligfx nessuno ha
    proposto una soluzione completa.
    Il vecchio sistema di costruzione su Autotools continua a essere supportato e utilizzato,
    e nel prossimo futuro non ci sono piani per abbandonarlo (in parte per non creare
    problemi agli sviluppatori di distribuzioni, e in parte perché il vecchio sistema di costruzione
    è più stabile e conciso rispetto al nuovo).
    Entrambi i sistemi sono testati continuamente con Travis CI.
  • Aggiunta la possibilità di specificare il codice dell'interfaccia nelle configurazioni utilizzando
    l'API generica (generic API). Prima la maggior parte delle API doveva essere specificata sotto forma di
    funzioni o macro funzionali. Ora possono essere specificate sotto forma di stringhe arbitrari
    con parametri di template nominati del tipo @@{name} oppure semplicemente @@ (se
    c'è un solo parametro e non si verifica ambiguità). Lo stile dell'API è definito dalla configurazione
    re2c:api:style (il valore functions definisce uno stile funzionale, mentre free-form – arbitrario).

  • Migliorato il funzionamento dell'opzione -c, —start-conditions, che consente di combinare più
    lessori interconnessi in un singolo blocco re2c. Ora è possibile utilizzare
    blocchi normali insieme a quelli condizionali e specificare più blocchi condizionali non connessi
    in un solo file.
    Migliorato il funzionamento dell'opzione -r, —reuse (riutilizzo del codice da un blocco
    in altri blocchi) in combinazione con le opzioni -c, —start-conditions e -f, —storable-state
    (lessore con stato salvabile, che può essere interrotto in qualsiasi punto
    e continuato in seguito).

  • Corretto un errore nell'algoritmo recentemente aggiunto per la gestione della fine dei dati in ingresso
    (regola EOF), che in rari casi portava a un'erronea elaborazione
    di regole sovrapposte.

  • Semplificato il processo di bootstrap. In passato, il sistema di costruzione cercava di trovare dinamicamente un re2c già
    compilato da utilizzare per la ricompilazione di se stesso.
    Questo portava a dipendenze errate (poiché il grafo delle dipendenze risultava
    dinamico, cosa che la maggior parte dei sistemi di build non gradisce).
    Ora, per ricompilare i lexer, è necessario configurare esplicitamente
    il sistema di build e impostare la variabile RE2C_FOR_BUILD.

Grazie a tutti coloro che hanno partecipato alla preparazione di questa release!

Fonte: linux.org.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster