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ē.-
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
