re2c 4.0

Otrdien, 19. novembrī, tika prezentēts izlaidums re2c – leksisko analizatoru ģeneratora (arī regulāro izteiksmju kompilatoru uz mērķvalodas programmēšanas kodu). re2c specializējas ātru un viegli iebūvējamu leksoru ģenerēšanā. Tas atšķiras no labi zināmā analoga flex ar elastīgu saskarni, optimizētu ne-tabulāro leksoru ģenerāciju un submatch extraction atbalstu, kas balstīts uz deterministiskajiem beigu automātiem ar atzīmēm (TDFA). re2c tiek izmantots projektos, kur leksora ātrums ir svarīgs, piemēram, Ninja un PHP.

Izlaidumam 4.0 būtiski ir pārstrādāta koda ģenerēšanas apakšsistēma, kas ļāva pievienot atbalstu astoņām jaunām valodām (D, Haskell, Java, JavaScript, OCaml, Python, V, Zig) papildus jau atbalstītajām (C/C++, Go, Rust), kā arī kopēju mehānismu jaunu valodu pievienošanai caur konfigurācijas failiem. Koda ģenerators ir atbildīgs par iegūto un optimizēto beigu automātu translatēšanu kodā, t.i., tā uzdevums ir izvēlēties piemērotas kontroles struktūras, datu tipus, vispārējo programmas modeli utt. Iepriekš visa šī loģika bija re2c avota kodā, un, lai to mainītu vai pievienotu jaunu valodu, bija nepieciešams labot avota kodu un pārbūvēt re2c. Šādi labojumi netika pieņemti galvenajā krātuvē bez standarta piemēru un testu īstenošanas, kas papildu sarežģīja visu procesu. Tagad visa šī loģika ir pārcelta uz sintaktiskajiem failiem – tekstuālajiem konfigurācijas failiem, kurus var sniegt lietotājs (pa noklusējumu re2c izmanto standartus). re2c avota kods ir pilnībā brīvs no konkrētās valodas sīkumiem un balstās tikai uz sintaktisko failu. Lietotājs var daļēji pārdefinēt esošo sintaktisko failu vai uzrakstīt jaunu no nulles. Visām oficiāli atbalstītajām valodām ir pilna dokumentācija ar piemēriem.

Starp citu, pati idea par sintaktiskajiem failiem radās, pateicoties vienam komentāram LORā, par ko paldies re2c 4.0the_coder.

Izlaidumā ir iekļauti daudz citu izmaiņu, kas vienkāršo lietotāja saskarni, uzlabo darbu ar saistošām grupām (capturing groups), kā arī tika pievienota tiešsaistes vide piemēru rediģēšanai un kompilēšanai: http://re2c.org/playground.

Avots: linux.org.ru

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster