re2c 2.0

Lunedì 20 luglio è stata rilasciata la versione di re2c – il generatore di analizzatori lessicali rapidi.
Principali modifiche:

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

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


    I tentativi di portare re2c su CMake sono stati fatti a lungo, ma fino a ligfx nessuno ha
    proposto una soluzione completa.
    Il vecchio sistema di build basato su Autotools continua a essere supportato e utilizzato,
    e nel prossimo futuro non ci sono piani di abbandonarlo (in parte per non creare
    problemi agli sviluppatori di distribuzioni, in parte perché il vecchio sistema di build
    è più stabile e conciso rispetto al nuovo).
    Entrambi i sistemi sono testati continuamente utilizzando Travis CI.
  • Aggiunta la possibilità di definire il codice di interfaccia nelle configurazioni utilizzando
    l'API generica (generic API). In precedenza, la maggior parte delle API dovevano essere definite in forma
    funzioni o macro funzionali. Ora possono essere definite sotto forma di stringhe arbitrari
    con parametri modello nominati del tipo @@{name} o semplicemente @@ (se
    c'è un solo parametro e non ci sono ambiguità). Lo stile 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ù
    analizzatori lessicali correlati all'interno di un unico blocco re2c. Ora è possibile utilizzare
    blocchi normali insieme a quelli condizionali e definire più blocchi condizionali non correlati
    in un singolo 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.
    (analizzatore con stato salvabile, che può essere interrotto in un punto arbitrario
    e ripreso in seguito).

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

  • Semplificato il processo di bootstrap. In passato, il sistema di build cercava di trovare dinamicamente
    re2c compilato, che potrebbe essere utilizzato per ricompilare 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 lessici, è 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