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