re2c 1.2

U venneri 2 d'Aostu, a liberazione di re2c, un generatore gratuitu di analizatori lessicali per e lingue C è C++, hè stata liberata. Re2c hè statu scrittu in u 1993 da Peter Bamboulis cum'è un generatore sperimentale di analizzatori lessicali assai veloci, distinti da altri generatori per a velocità di u codice generatu è una interfaccia d'utilizatore inusualmente flexible chì permette à l'analizzatori di esse integrati facilmente è efficacemente in una basa di codice esistente. Da tandu, u prugettu hè statu sviluppatu da a cumunità è cuntinueghja à esse una piattaforma per l'esperimenti è a ricerca in u campu di grammatiche formali è macchine di stati finiti.

Innuvazioni principali in a versione 1.2:

  • Aggiuntu un novu modu (simplificatu) per verificà a fine di i dati di input
    (Inglese "Regula EOF").
    Per questu, a cunfigurazione re2c:eof hè stata aghjunta,
    permette di selezziunà u caratteru terminale,
    è una regula $ spiciali chì spara se u lexer
    ghjuntu successu à a fine di i dati di input.
    Storicamente, re2c furnisce una scelta di parechji metudi di verificazione per
    fine di inputs varieghja in limitazione, efficienza è simplicità
    applicazioni. U novu mètudu hè designatu per simplificà u codice di scrittura, mentri
    pur essendu efficace è largamente applicabile. Vechji modi
    travaglia sempre è pò esse preferitu in certi casi.

  • Aggiunta a capacità di include i schedari esterni cù una direttiva
    /*!include:re2c "file.re" */ induve file.re
    questu hè u nome di u schedariu include. Re2c cerca i fugliali in u repertoriu di i schedari inclusi,
    è ancu in a lista di i chjassi specificati cù l'opzione -I.
    I schedari inclusi ponu include altri schedari.
    Re2c furnisce i schedari "standard" in u repertoriu include/
    prughjettu - hè previstu chì e definizione utili s'accumuleranu quì
    espressioni rigulari, qualcosa cum'è a libreria standard.
    Finu a ora, à a dumanda di i travagliadori, hè statu aghjuntu un schedariu cù definizioni di categurie Unicode.

  • Aggiunta a capacità di generà fugliali di header cù arbitraria
    cuntenutu utilizendu l'opzioni -t --type-header (o apprupriati
    cunfigurazioni) è novi direttive /*!header:re2c:on*/ è
    /*!header:re2c:off*/. Questu pò esse utile in i casi induve
    quandu re2c hà bisognu di generà definizioni di variàbili, strutture è macros,
    usatu in altre unità di traduzzione.

  • Re2c capisce avà i letterali UTF8 è e classi di caratteri in espressioni regulari.
    Per automaticamente, re2c analizza espressioni cum'è "∀x ∃y" cum'è.
    séquence de caractères ASCII à 1 bit e2 88 80 78 20 e2 88 83 79
    (codici esadecimale), è l'utilizatori anu da scappà i caratteri Unicode manualmente:
    "u2200x u2203y". Questu hè assai inconveniente è inesperu per parechji
    utilizatori (cum'è evidenza da rapporti di bug custanti). Allora avà
    re2c furnisce una opzione --input-encoding ,
    chì permette di cambià u cumpurtamentu è parse "∀x ∃y" cum'è
    2200 78 20 2203 79.

  • Re2c permette avà l'usu di blocchi re2c regulari in u modu -r --reuse.
    Questu hè convenientu se u schedariu di input cuntene parechji blocchi è solu alcuni di elli
    deve esse riutilizzatu.

  • Avà vi ponu stabilisce u furmatu di avvirtimenti è missaghji errore
    utilizendu a nova opzione --location-format . U furmatu GNU hè visualizatu
    cum'è filename:line:colonna:, è u furmatu MSVC cum'è filename (linea,colonna).
    Questa funzione pò esse utile per l'amatori IDE.
    Una opzione --verbose hè stata ancu aghjunta, chì stampa un brevi missaghju di vittoria s'ellu hè successu.

  • U modu di "cumpatibilità" cù flex hè statu migliuratu - alcuni errori di analisi sò stati corretti è
    precedenza di l'operatore sbagliata in casi rari.
    Stòricamente, l'opzione -F --flex-support permette di scrive codice
    mischju in stile flex è stile re2c, chì rende l'analisi un pocu difficiule.
    U modu di cumpatibilità Flex hè raramente utilizatu in u novu codice,
    ma re2c cuntinueghja à sustene per a cumpatibilità inversa.

  • L'operatore di sottrazione di classi di caratteri / si applica avà
    prima di espansione a codificazione, chì permette di esse usata in un numeru maiò di casi,
    s'ellu hè aduprata una codificazione di caratteri variabile (per esempiu UTF8).

  • U schedariu di output hè avà creatu atomicu: re2c crea prima un schedariu tempurale
    è scrive u risultatu in questu, è poi rinomina u schedariu pruvisoriu à l'output
    una operazione.

  • A documentazione hè stata cumpletata è riscritta; in particulare, sò stati aghjuntu novi
    capituli circa à riempia u buffer
    и circa modi per verificà a fine di i dati di input.
    A nova documentazione hè recullata in a forma
    un manuale completo di una pagina
    cù esempi (i stessi fonti sò resi in a manpage è in a documentazione in linea).
    Poveri tentativi sò stati fatti per migliurà a leghjibilità di u situ nantu à i telefoni.

  • Da u puntu di vista di i sviluppatori, re2c hà acquistatu un sottosistema più cumpletu
    debugging U codice di debugging hè avà disattivatu in e versioni di liberazione è
    pò esse attivatu cù l'opzione di cunfigurazione --enable-debug.

Questa liberazione hà pigliatu assai tempu - quasi un annu sanu.
A maiò parte di u tempu, cum'è sempre, hè stata spesa à sviluppà un quadru teoricu è scrittura
articuli "Efficace POSIX Submatch Extraction in NFA".
L'algoritmi descritti in l'articulu sò implementati in a libreria sperimentale libre2c
(Custruì a biblioteca è i benchmarks hè disattivata per automaticamente è hè attivata da l'opzione di cunfigurazione
--enable-libs). A biblioteca ùn hè micca cuncipitu cum'è un competitore à l'esistenti
prughjetti cum'è RE2, ma cum'è una piattaforma di ricerca per u sviluppu di novi
algoritmi (chì ponu esse usatu in re2c o in altri prughjetti).
Hè ancu cunvene da u puntu di vista di teste, benchmarks è creanu ligami à altre lingue.

Grazie da i sviluppatori di re2c à tutti quelli chì anu aiutatu à sta liberazione,
è à a cumunità in generale per idee, rapporti di bug, patches, morale, etc. ;]

Source: linux.org.ru

Add a comment