Rilascio del generatore di analizzatori lessicali re2c 1.2

Si è svolto rilascio re2c, un generatore open source 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, distinguendosi dagli altri generatori per la velocità del codice generato e per un'interfaccia utente particolarmente flessibile, che consente di integrare facilmente ed efficacemente gli analizzatori nel codice esistente. Da allora, il progetto è cresciuto grazie alla comunità e continua a essere un terreno fertile per esperimenti e ricerche nel campo delle grammatiche formali e degli automi finiti.

La preparazione del rilascio ha richiesto quasi un anno intero. Come sempre, la maggior parte del tempo è stata dedicata allo sviluppo della base teorica e alla scrittura
dell'articolo "Efficient POSIX Submatch Extraction on NFA«.
Gli algoritmi descritti nell'articolo sono implementati nella libreria sperimentale libre2c
(la compilazione della libreria e dei test di prestazione è disabilitata per impostazione predefinita e può essere attivata con l'opzione di configurazione «--enable-libs»). La libreria non è concepita per essere un concorrente di progetti già esistenti come RE2, ma come un laboratorio di ricerca per lo sviluppo di nuovi
algoritmi (che possono poi essere utilizzati in re2c o in altri progetti). Inoltre, questo è comodo per il testing, la misurazione delle prestazioni e la creazione di binding ad altri linguaggi.

Le principali novità nella versione re2c 1.2:

  • È stato aggiunto un nuovo modo semplificato per verificare la fine dei dati di input («EOF rule»). A tal fine è stata aggiunta la configurazione «re2c:eof»,
    che consente di scegliere il carattere terminale,
    e una regola speciale «$», che viene attivata se il lessicografo
    raggiunge con successo la fine dei dati di input.
    Storicamente, re2c offre diverse opzioni per il controllo della
    fine dei dati di input, che variano per limitazione, efficacia e semplicità
    di utilizzo. Il nuovo metodo è progettato per semplificare la scrittura del codice, mantenendo
    l'efficacia e un ampio uso. I metodi precedenti
    continuano a funzionare e possono essere preferibili in casi specifici.
  • È stata aggiunta la possibilità di includere file esterni tramite la direttiva
    «/*!include:re2c «file.re» */», dove «file.re» è il nome del file da includere. Re2c cerca i file nella directory del file che include
    e anche nell'elenco 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 qui vengano accumulate definizioni utili
    di espressioni regolari, qualcosa nel senso di una libreria standard.
    Fino ad ora, su richiesta popolare, è stato aggiunto un file con definizioni per le categorie Unicode.
  • È stata aggiunta la possibilità di generare file di intestazione con contenuti arbitrari
    tramite le opzioni «-t —type-header» (o configurazioni corrispondenti) e le nuove direttive «/*!header:re2c:on*/» e
    «/*!header:re2c:off*/». Questo può essere utile nei casi in cui
    «/*!header:re2c:off*/». Potrebbe essere utile in caso di,
    re2c deve generare definizioni di variabili, strutture e macro
    utilizzate in altre unità di traduzione.
  • Re2c ora comprende i caratteri letterali UTF8 e le classi di caratteri nelle espressioni regolari.
    Per impostazione predefinita, re2c analizza espressioni come «∀x ∃y» come
    una sequenza di caratteri ASCII a 1 bit «e2 88 80 78 20 e2 88 83 79»
    (codici esadecimali), e gli utenti devono eseguire il trattamento dei caratteri Unicode manualmente:
    «\\u2200x \\u2203y». Questo è molto scomodo e inaspettato per molti
    utenti (come dimostrano i continui bug report). Quindi ora
    re2c offre l'opzione «—input-encoding {ascii | utf8}»,
    che consente di modificare il comportamento e di analizzare «∀x ∃y» come
    «2200 78 20 2203 79».
  • Re2c ora consente di utilizzare i normali blocchi re2c in modalità «-r —reuse».
    Questo è utile se il file di input contiene molti blocchi, e solo una parte di essi
    ha bisogno di essere riutilizzata.
  • È ora possibile impostare il formato degli avvisi e dei messaggi di errore
    con la nuova opzione «—location-format {gnu | msvc}». Il formato GNU è visualizzato
    come «filename:line:column:», mentre il formato MSVC come «filename(line,column)».
    Questa funzione può essere utile agli appassionati di IDE.
    È stata aggiunta anche l'opzione «—verbose», che stampa un breve messaggio di successo in caso di esito positivo.
  • È stata migliorata la modalità «compatibilità» con flex — sono stati corretti alcuni errori di analisi e
    la priorità degli operatori in rari casi.
    Storicamente, l'opzione «-F —flex-suppor» consente di scrivere codice
    mescolato 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 garantire la retrocompatibilità.
  • L'operatore di sottrazione dei classi di caratteri «/» è ora applicabile
    fino allo sviluppo della codifica, il che consente di utilizzarlo in un numero maggiore di casi,
    se si utilizza una codifica con lunghezza variabile del carattere (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, quindi rinomina il file temporaneo in file di output
    in un'unica operazione.
  • La documentazione è stata ampliata e riscritta; in particolare, sono stati aggiunti nuovi
    capitoli su http://re2c.org/manual/manual.html#buffer-refilling il riempimento del buffer
    e sui metodi per il controllo della fine dei dati in ingresso..
    La nuova documentazione è stata raccolta in
    una guida completa di una sola pagina
    con esempi (gli stessi sorgenti vengono visualizzati sia nella manpage che nella documentazione online).
    Sono stati fatti timidi tentativi di migliorare la leggibilità del sito sui telefoni.
  • Dal punto di vista degli sviluppatori, re2c ha acquisito un sistema secondario più completo.
    debugging. Il codice di debug è ora disattivato nelle build di rilascio e
    può essere attivato con l'opzione di configurazione «—enable-debug».

Fonte: opennet.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