Marți, 19 noiembrie, a fost lansată re2c – generatorul de analizatori lexici (care este și compilatorul expresiilor regulate în cod în limbajul de programare țintă). re2c se specializează în generarea de lexeri rapizi și ușor de integrat. Se deosebește de echivalentul său mai cunoscut, flex, printr-un interfata flexibilă, generarea de lexeri optimizați fără tabele și suport pentru extragerea submatch-urilor bazate pe automate finite deterministe cu etichete (TDFA). re2c este utilizat în proiecte unde viteza de operare a lexerului este importantă, cum ar fi Ninja și PHP.
În versiunea 4.0, subsystem-ul de generare a codului a fost complet reproiectat, ceea ce a permis adăugarea suportului pentru opt noi limbi (D, Haskell, Java, JavaScript, OCaml, Python, V, Zig) pe lângă cele deja susținute (C/C++, Go, Rust), precum și un mecanism general pentru adăugarea de noi limbi prin fișiere de configurare. Generatorul de cod răspunde de traducerea automatului finit deja construit și optimizat în cod, adică sarcina sa este de a alege construcțiile de control corespunzătoare pentru limbajul țintă, tipurile de date, modelul general al programului etc. Anterior, toată această logică era parte din codul sursă re2c, iar pentru a o modifica sau pentru a adăuga o limbă nouă, era necesar să se aplice patch-uri la codul sursă și să se recompilaze re2c. Astfel de patch-uri nu erau acceptate în depozitul principal fără implementarea unui set standard de exemple și teste, ceea ce complica și mai mult procesul. Acum toată această logică a fost mutată în fișierele sintactice – fișiere de configurare text care pot fi furnizate de utilizator (implicit, re2c utilizează standardele). Codul sursă re2c este complet liber de detaliile limbajelor specifice și se bazează doar pe fișierul sintactic. Utilizatorul poate suprascrie parțial un fișier sintactic existent sau poate scrie unul nou de la zero. Pentru toate limbile oficial susținute există documentație completă cu exemple.
Apropo, ideea în sine a fișierelor sintactice a apărut datorită unei comentarii pe LOR, pentru care mulțumim
the_coder.
În versiune au fost incluse multe alte modificări pentru simplificarea interfeței utilizatorului, îmbunătățirea lucrului cu grupurile de captura, precum și o mediu online pentru editarea și compilarea exemplelor: http://re2c.org/playground.
Sursa: linux.org.ru
