re2c 2.0

Luni, 20 iulie, a fost lansat re2c, un generator rapid de analizor lexical.
Principalele modificări:

  • S-a adăugat suport pentru limba Go
    (activat fie de opțiunea --lang go pentru re2c, fie ca program separat re2go).
    Documentația pentru C și Go este generată din același text, dar cu diferite
    exemple de cod. Subsistemul de generare a codului din re2c a fost complet reproiectat, ceea ce
    ar trebui să faciliteze sprijinirea noilor limbi în viitor.

  • S-a adăugat un sistem de construcție alternativ pentru CMake (mulțumesc ligfx).!
    Încercările de a traduce re2c în CMake au fost făcute de mult timp, dar înainte de ligfx nimeni
    a oferit o soluție completă.
    Vechiul sistem de construcție pe Autotools continuă să fie susținut și utilizat,
    și în viitorul previzibil nu există planuri de a o abandona (parțial pentru a nu crea
    probleme pentru dezvoltatorii de distribuție, parțial din cauza vechiului sistem de construcție
    mai stabil şi mai concis decât cel nou).
    Ambele sisteme sunt testate continuu folosind Travis CI.

  • S-a adăugat posibilitatea de a seta codul de interfață în configurații atunci când se utilizează
    API generic. Anterior, majoritatea API-urilor trebuiau specificate în formular
    funcții sau macrofuncții. Acum pot fi specificate sub formă de arbitrare
    linii cu parametri de șablon numiți, cum ar fi @@{nume} sau doar @@ (dacă
    există un singur parametru și nu există ambiguitate). Stilul API este specificat de configurare
    re2c:api:style (valoarea funcțiilor specifică un stil funcțional, iar free-form specifică un stil arbitrar).

  • Funcționarea opțiunii -c, --start-conditions a fost îmbunătățită, permițându-vă să combinați mai multe
    lexeri interconectați într-un bloc re2c. Acum poți folosi
    blocuri obișnuite împreună cu cele condiționate și specificați mai multe blocuri condiționate fără legătură
    blocuri într-un singur fișier.
    Funcționare îmbunătățită a opțiunii -r, --reuse (reutilizarea codului dintr-un bloc
    în alte blocuri) în combinație cu opțiunile -c, --start-conditions și -f, --storable-state
    (un lexer cu stare care poate fi întrerupt în orice moment
    și continua execuția mai târziu).

  • S-a remediat o eroare în algoritmul de sfârșit de intrare adăugat recent
    (regula EOF), care în cazuri rare a dus la o prelucrare incorectă
    reguli care se suprapun.

  • Procesul de bootstrap a fost simplificat. Anterior, sistemul de compilare a încercat să găsească deja dinamic
    o construcție re2c care ar putea fi folosită pentru a se reconstrui.
    Acest lucru a dus la dependențe incorecte (deoarece graficul dependenței a fost
    dinamic, ceea ce majoritatea sistemelor de construcție nu le place).
    Acum, pentru a reconstrui lexeri, trebuie să faceți în mod explicit
    configurați sistemul de construcție și setați variabila RE2C_FOR_BUILD.

Mulțumim tuturor celor care au participat la pregătirea acestei ediții!

Sursa: linux.org.ru

Adauga un comentariu