re2c 1.2

Venerdì 2 agosto è stato rilasciato il rilascio di re2c, un generatore gratuito di analizzatori lessicali per i linguaggi C e C++. Re2c è stato scritto nel 1993 da Peter Bamboulis come generatore sperimentale di analizzatori lessicali molto veloci, distinto da altri generatori per la velocità del codice generato e un'interfaccia utente insolitamente flessibile che consente agli analizzatori di essere incorporati facilmente ed efficacemente in una base di codice esistente. Da allora il progetto è stato sviluppato dalla comunità e continua ad essere una piattaforma per esperimenti e ricerche nel campo delle grammatiche formali e delle macchine a stati finiti.

Principali novità della versione 1.2:

  • Aggiunto un nuovo modo (semplificato) per verificare la fine dei dati di input
    (inglese “regola EOF”).
    Per questo è stata aggiunta la configurazione re2c:eof,
    ti permette di selezionare il carattere del terminale,
    e una regola $ speciale che si attiva se il lexer
    raggiunto con successo la fine dei dati di input.
    Storicamente, re2c offre una scelta di diversi metodi di verifica per
    fine di input variabili in termini di limitazione, efficienza e semplicità
    applicazioni. Il nuovo metodo è progettato per semplificare la scrittura del codice, mentre
    pur rimanendo efficace e ampiamente applicabile. Vecchie vie
    funzionano ancora e in alcuni casi possono essere preferiti.

  • Aggiunta la possibilità di includere file esterni utilizzando una direttiva
    /*!include:re2c "file.re" */ dove file.re
    questo è il nome del file include. Re2c cerca i file nella directory dei file inclusi,
    così come nell'elenco dei percorsi specificati utilizzando l'opzione -I.
    I file inclusi possono includere altri file.
    Re2c fornisce file "standard" nella directory include/
    progetto: si prevede che lì si accumuleranno definizioni utili
    espressioni regolari, qualcosa come la libreria standard.
    Finora, su richiesta dei lavoratori, è stato aggiunto un file con le definizioni delle categorie Unicode.

  • Aggiunta la possibilità di generare file di intestazione con arbitrario
    contenuto utilizzando le opzioni -t --type-header (o appropriate
    configurazioni) e nuove direttive /*!header:re2c:on*/ e
    /*!header:re2c:off*/. Questo può essere utile nei casi in cui
    quando re2c ha bisogno di generare definizioni di variabili, strutture e macro,
    utilizzato in altre unità di traduzione.

  • Re2c ora comprende i valori letterali UTF8 e le classi di caratteri nelle espressioni regolari.
    Per impostazione predefinita, re2c analizza espressioni come "∀x ∃y" come.
    sequenza di caratteri ASCII da 1 bit e2 88 80 78 20 e2 88 83 79
    (codici esadecimali) e gli utenti devono eseguire manualmente l'escape dei caratteri Unicode:
    "u2200x u2203y". Questo è molto scomodo e inaspettato per molti
    utenti (come evidenziato da costanti segnalazioni di bug). Così ora
    re2c fornisce un'opzione --input-encoding ,
    che ti consente di modificare il comportamento e analizzare "∀x ∃y" come
    +2200 78 20 2203

  • Re2c ora consente l'uso di blocchi re2c regolari in modalità -r --reuse.
    Ciò è utile se il file di input contiene molti blocchi e solo alcuni di essi
    deve essere riutilizzato.

  • Ora puoi impostare il formato degli avvisi e dei messaggi di errore
    utilizzando la nuova opzione --location-format . Viene visualizzato il formato GNU
    come nomefile:riga:colonna: e il formato MSVC come nomefile(riga,colonna).
    Questa funzionalità può essere utile per gli amanti dell'IDE.
    È stata aggiunta anche l'opzione --verbose, che stampa un breve messaggio di vittoria in caso di successo.

  • La modalità "compatibilità" con flex è stata migliorata: alcuni errori di analisi sono stati corretti e
    precedenza errata dell'operatore in rari casi.
    Storicamente, l'opzione -F --flex-support consentiva di scrivere codice
    mescolato in stile flex e stile re2c, il che rende l'analisi un po' difficile.
    La modalità di compatibilità Flex viene utilizzata raramente nel nuovo codice,
    ma re2c continua a supportarlo per compatibilità con le versioni precedenti.

  • Ora si applica l'operatore di sottrazione della classe di caratteri /
    prima di espandere la codifica, che ne consente l'utilizzo in un numero maggiore di casi,
    se viene utilizzata una codifica a lunghezza di carattere variabile (ad esempio UTF8).

  • Il file di output viene ora creato in modo atomico: re2c crea prima un file temporaneo
    e scrive il risultato al suo interno, quindi rinomina il file temporaneo nell'output
    una operazione.

  • La documentazione è stata completata e riscritta; in particolare ne furono aggiunti di nuovi
    testa sul riempimento del buffer
    и sui modi per verificare la fine dei dati di input.
    La nuova documentazione viene raccolta nel form
    un manuale completo di una pagina
    con esempi (gli stessi sorgenti sono visualizzati nella manpage e nella documentazione in linea).
    Sono stati fatti scarsi tentativi per migliorare la leggibilità del sito sui telefoni.

  • Dal punto di vista degli sviluppatori, re2c ha acquisito un sottosistema più completo
    debug Il codice di debug è ora disabilitato nelle build di rilascio e
    può essere abilitato utilizzando 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 di un quadro teorico e alla scrittura
articoli "Estrazione efficiente delle sottopartite POSIX su NFA".
Gli algoritmi descritti nell'articolo sono implementati nella libreria sperimentale libre2c
(la creazione della libreria e dei benchmark è disabilitata per impostazione predefinita ed è abilitata dall'opzione di configurazione
--enable-libs). La biblioteca non è concepita come concorrente dell’esistente
progetti come RE2, ma come piattaforma di ricerca per lo sviluppo di nuovi
algoritmi (che possono poi essere utilizzati in re2c o in altri progetti).
È conveniente anche dal punto di vista dei test, dei benchmark e della creazione di collegamenti ad altri linguaggi.

Grazie dagli sviluppatori di re2c a tutti coloro che hanno contribuito a realizzare questo rilascio,
e alla comunità in generale per idee, segnalazioni di bug, patch, morale, ecc. ;]

Fonte: linux.org.ru

Aggiungi un commento