re2c 1.2

Venerdì 2 agosto è stato rilasciato re2c — un generatore libero di analizzatori lessicali per i linguaggi C e C++. Ricordiamo che re2c è stato scritto nel 1993 da Peter Bambulis come generatore sperimentale di analizzatori lessicali molto veloci, caratterizzato dalla velocità del codice generato e da un'interfaccia utente insolitamente flessibile, che consente di integrare facilmente ed efficacemente gli analizzatori nel codice esistente. Da allora, il progetto è stato sviluppato dalla comunità e continua a essere un luogo di esperimenti e ricerche nel campo delle grammatiche formali e degli automi finiti.

Novità principali nella versione 1.2:

  • Aggiunto un nuovo modo (semplificato) per verificare la fine dei dati di ingresso
    (inglese «EOF rule»).
    A tal fine, è stata aggiunta la configurazione re2c:eof,
    che consente di scegliere il simbolo terminale,
    e una regola speciale $, che scatta se il lessicatore
    ha raggiunto con successo la fine dei dati di ingresso.
    Storicamente, re2c offre diverse modalità per verificare la
    fine dei dati di ingresso, variando per limitazioni, efficacia e semplicità
    d'uso. Il nuovo metodo è stato progettato per semplificare la scrittura del codice, rimanendo
    efficace e ampiamente applicabile. I metodi precedenti
    funzionano ancora e possono essere preferibili in alcuni casi.

  • Aggiunta la possibilità di includere file esterni tramite la direttiva
    /*!include:re2c "file.re" */, где file.re
    questo è il nome del file incluso. Re2c cerca i file nella directory del file incluso,
    così come nella lista dei percorsi forniti tramite l'opzione -I.
    I file inclusi possono includere altri file.
    Re2c fornisce file «standard» nella directory include/
    del progetto — si presume che lì verranno accumulati utili definiti
    di espressioni regolari, qualcosa nello spirito della libreria standard.
    Finora, su richiesta degli utenti, è stato aggiunto un file con definizioni delle categorie Unicode.

  • Aggiunta la possibilità di generare file di intestazione con contenuti arbitrari
    utilizzando le opzioni -t —type-header (o le corrispondenti
    configurazioni) e le nuove direttive /*!header:re2c:on*/ e
    /*!header:re2c:off*/. Это может быть полезно в случаях,
    quando re2c deve generare definizioni di variabili, strutture e macro,
    utilizzate in altre unità di traduzione.

  • Re2c ora comprende lettere UTF8 e classi di simboli nelle espressioni regolari.
    Per impostazione predefinita, re2c analizza espressioni come "∀x ∃y" come.
    sequenza di caratteri ASCII a 1 bit e2 88 80 78 20 e2 88 83 79
    (codici esadecimali), e gli utenti devono eseguire manualmente l'escaping dei caratteri Unicode:
    "u2200x u2203y". Questo è molto scomodo e inaspettato per molti
    utenti (come dimostrano i report di bug costanti). Per questo motivo, ora
    re2c fornisce l'opzione —input-encoding ,
    che permette di modificare il comportamento e analizzare "∀x ∃y" come
    2200 78 20 2203 79.

  • Re2c ora permette di utilizzare i blocchi re2c standard in modalità -r —reuse.
    Questo è utile se il file di input contiene molti blocchi e solo alcuni di essi
    necessitano di essere riutilizzati.

  • È stata introdotta la possibilità di impostare il formato dei messaggi di avviso e di errore
    utilizzando la nuova opzione —location-format . Il formato GNU viene visualizzato
    come filename:line:column:, mentre il formato MSVC come filename(line,column).
    Questa funzionalità può essere utile agli appassionati di IDE.
    È stata anche aggiunta l'opzione —verbose, che fornisce un breve messaggio di successo in caso di esito positivo.

  • È stata migliorata la modalità di "compatibilità" con flex — sono stati corretti alcuni errori di analisi e
    priorità degli operatori in rari casi.
    Storicamente, l'opzione -F —flex-support permette di scrivere codice
    misto nello stile flex e nello stile re2c, il che rende un po' più difficile l'analisi sintattica.
    La modalità di compatibilità con flex è raramente utilizzata nel nuovo codice,
    ma re2c continua a supportarla per la retrocompatibilità.

  • L'operatore di sottrazione dei classi di caratteri / ora viene applicato
    prima dell'espansione della codifica, il che consente di utilizzarlo in un numero maggiore di casi,
    se viene utilizzata una codifica a lunghezza variabile dei caratteri (ad esempio UTF8).

  • Il file di output viene ora creato in modo atomico: re2c crea prima un file temporaneo
    e scrive il risultato in esso, per poi rinominare il file temporaneo nel file di output
    in un'unica operazione.

  • La documentazione è stata completata e riscritta; in particolare, sono stati aggiunti nuovi
    capitoli sulla gestione del buffer
    e sui metodi di verifica della fine dei dati di input.
    La nuova documentazione è stata raccolta in un
    completo manuale di una sola pagina
    con esempi (gli stessi sorgenti vengono visualizzati nella manpage e nella documentazione online).
    Sono stati compiuti timidi tentativi di migliorare la leggibilità del sito sui telefoni.

  • Dal punto di vista degli sviluppatori, re2c ha acquisito un sistema di
    debugging più completo. Il codice di debug è ora disabilitato nelle versioni di rilascio e
    può essere attivato tramite l'opzione di configurazione —enable-debug.

Questa versione ha richiesto molto tempo, quasi un anno intero.
La maggior parte del tempo, come sempre, è stata dedicata allo sviluppo delle basi teoriche e alla scrittura
sul CommunityHelpWiki (sullo stesso dominio «Efficient POSIX Submatch Extraction on NFA».
Gli algoritmi descritti nell'articolo sono stati implementati in una libreria sperimentale chiamata libre2c
(la compilazione della libreria e dei benchmark è disattivata per impostazione predefinita e può essere attivata con l'opzione di configurazione
—enable-libs). La libreria non è progettata come un concorrente di progetti esistenti
come RE2, ma come una piattaforma di ricerca per lo sviluppo di nuovi
algoritmi (che possono poi essere utilizzati in re2c o in altri progetti).
Questo è anche conveniente dal punto di vista della sperimentazione, dei benchmark e della creazione di binding per altri linguaggi.

Grazie dagli sviluppatori di re2c a tutti coloro che hanno reso possibile questo rilascio,
e in generale alla comunità per le idee, i report di bug, le patch, lo spirito combattivo, ecc. ;]

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