re2c 2.0

Pirmdien, 20. jūlijā, tika izlaists re2c – ātru leksisko analītisko rīku ģenerators.
Galvenās izmaiņas:

  • Pievienota Go valodas atbalsts
    (ieslēdzams vai kā opcija —lang go re2c, vai kā atsevišķa programma re2go).
    Dokumentācija C un Go tiek ģenerēta no viena un tā paša teksta, bet ar atšķirīgiem
    koda piemēriem. Pilnībā pārstrādāta koda ģenerēšanas apakšsistēma re2c, kas
    domāts atvieglot jaunu valodu atbalstu nākotnē.

  • Pievienota alternatīva sistēma ģenerēšanai ar CMake (paldies ligfx!).


    Centieni pārnest re2c uz CMake jau ilgi notika, bet līdz ligfx neviens
    nepieņēma pilnvērtīgu risinājumu.
    Vecā Autotools būvniecības sistēma joprojām tiek atbalstīta un izmantota,
    un tuvākajā nākotnē nav plānu no tās atteikties (daļēji, lai neradītu
    problēmas izplatītāju izstrādātājiem, daļēji tāpēc, ka vecā būvniecības sistēma
    ir stabilāka un lakoniskāka nekā jaunā).
    Abas sistēmas vienlīdzīgi tiek nepārtraukti testētas ar Travis CI.
  • Pievienota iespēja definēt saskarnes kodu konfigurācijās, izmantojot
    ģenerisko API. Agrāk lielākā daļa API bija jānosaka funkciju vai
    funkcionālo makro veidā. Tagad tos var definēt kā shēmas ar nosaukuma
    parametriem, piemēram, @@{name} vai vienkārši @@ (ja
    parametrs ir viens un nerodas neskaidrības). API stilu nosaka
    re2c:api:style konfigurācija (vērtība functions nosaka funkcionālo stilu, bet free-form – brīvo).

  • Uzlabota -c, —start-conditions opcijas darbība, kas ļauj apvienot vairākas
    saistītas leksiskās analīzes daļas vienā re2c blokā. Tagad var izmantot
    parastus blokos līdzās nosacījumiem un noteikt vairākus nesasaistītus nosacījumu
    blokus vienā failā.
    Uzlabota -r, —reuse opcijas darbība (koda atkārtota izmantošana no viena bloka
    citos blokos) kombinācijā ar -c, —start-conditions un -f, —storable-state opcijām
    (leksiskā analīze ar saglabājamu stāvokli, kuru var pārtraukt jebkurā vietā
    un turpināt izpildi vēlāk).

  • Aizvērta kļūda nesen pievienotajā ievades datu beigu apstrādes algoritmā
    (EOF noteikums), kas dažos gadījumos izraisīja nepareizu apstrādi
    pārklājošos noteikumus.

  • Vienkāršota būvēšanas procesa bootstraps. Agrāk būvniecības sistēma centās dinamiskā veidā atrast jau
    uzbūvētu re2c, ko varētu izmantot tā lai pārveidotu sevi.
    Tas noveda pie nepareizām atkarībām (jo atkarību grafiks bija
    dinamiskus, ko lielākā daļa kompilācijas sistēmu nepatīk).
    Tagad, lai pārbūvētu leksērus, ir nepieciešams skaidri
    konfigurēt kompilācijas sistēmu un iestatīt mainīgo RE2C_FOR_BUILD.

Paldies visiem, kas piedalījās šī izlaiduma sagatavošanā!

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