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