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.-
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
