notika atbrīvot re2c, bezmaksas leksiskā analizatora ģenerators C un C++ valodām. Atcerēsimies, ka re2c 1993. gadā rakstīja Pēteris Bambulis kā eksperimentāls ļoti ātru leksisko analizatoru ģenerators, kas no citiem ģeneratoriem atšķiras ar ģenerētā koda ātrumu un neparasti elastīgu lietotāja interfeisu, kas ļauj viegli un efektīvi integrēt analizatorus esošajā. koda bāze. Kopš tā laika projektu ir izstrādājusi kopiena, un tas joprojām ir platforma eksperimentiem un pētījumiem formālās gramatikas un galīgo stāvokļu mašīnu jomā.
Gatavošanās izlaišanai ilga gandrīz veselu gadu. Lielāko daļu laika, kā vienmēr, pavadīja teorētiskā ietvara izstrāde un rakstīšana
raksti "Efektīva POSIX apakšspēļu ekstrakcija uz NFA".
Rakstā aprakstītie algoritmi ir realizēti eksperimentālajā bibliotēkā libre2c
(bibliotēkas izveide un veiktspējas testi pēc noklusējuma ir atspējoti, un to iespējo ar konfigurācijas opciju “—enable-libs”). Bibliotēka nav paredzēta kā konkurents esošajiem projektiem, piemēram, RE2, bet gan kā pētniecības platforma jaunu izstrādei.
algoritmi (kurus pēc tam var izmantot re2c vai citos projektos). Tas ir ērti arī no testēšanas, veiktspējas mērīšanas un citu valodu saišu izveides viedokļa.
Galvenie jauninājumi versijā re2c 1.2:
Pievienota jauna vienkāršota metode ievades datu beigu pārbaudei (“EOF noteikums”). Šim nolūkam ir pievienota konfigurācija “re2c:eof”,
ļauj izvēlēties termināļa rakstzīmi,
un īpašs noteikums “$”, kas tiek iedarbināts, ja lekseris
veiksmīgi sasniedzis ievades datu beigas.
Vēsturiski re2c nodrošina vairāku verifikācijas metožu izvēli
beigas, kas atšķiras pēc ierobežojumiem, efektivitātes un vienkāršības
lietojumprogrammas. Jaunā metode ir izstrādāta, lai vienkāršotu koda rakstīšanu
vienlaikus saglabājot efektīvu un plaši piemērojamu. Vecie veidi
joprojām darbojas un dažos gadījumos var būt priekšroka.
Pievienota iespēja iekļaut ārējos failus, izmantojot direktīvu
"/*!include:re2c "file.re" */", kur "file.re" ir iekļaujamā faila nosaukums. Re2c meklē failus, tostarp failu direktorijā,
kā arī ceļu sarakstā, kas norādīts, izmantojot opciju “-I”.
Iekļautie faili var ietvert citus failus.
Re2c nodrošina "standarta" failus direktorijā "include/".
projekts - paredzams, ka tajā uzkrāsies noderīgas definīcijas
regulāras izteiksmes, piemēram, standarta bibliotēka.
Līdz šim pēc darbinieku lūguma ir pievienots viens fails ar Unicode kategoriju definīcijām.
Pievienota iespēja ģenerēt galvenes failus ar patvaļīgu
saturam, izmantojot opcijas "-t --type-header" (vai atbilstošas
konfigurācijas) un jaunās direktīvas "/*!header:re2c:on*/" un
"/*!header:re2c:off*/". Tas var būt noderīgi gadījumos, kad
kad re2c ir jāģenerē mainīgo, struktūru un makro definīcijas,
izmanto citās tulkošanas vienībās.
Re2c tagad saprot UTF8 literāļus un rakstzīmju klases regulārajās izteiksmēs.
Pēc noklusējuma re2c parsē tādas izteiksmes kā "∀x ∃y" kā
1 bitu ASCII rakstzīmju secība “e2 88 80 78 20 e2 88 83 79”
(heksadesmtiskie kodi), un lietotājiem ir manuāli jāatbrīvojas no unikoda rakstzīmēm:
"\\u2200x\\u2203y". Tas daudziem ir ļoti neērti un negaidīti
lietotājiem (par to liecina pastāvīgi kļūdu ziņojumi). Tātad tagad
re2c nodrošina opciju "--input-encoding {ascii | utf8}",
kas ļauj mainīt uzvedību un parsēt “∀x ∃y” kā
“2200 78 20 2203 79.”
Re2c tagad ļauj izmantot parastos re2c blokus režīmā "-r --reuse".
Tas ir ērti, ja ievades failā ir daudz bloku un tikai daži no tiem
nepieciešams atkārtoti izmantot.
Tagad varat iestatīt brīdinājumu un kļūdu ziņojumu formātu
izmantojot jauno opciju "--location-format {gnu | msvc}". Tiek parādīts GNU formāts
kā "faila nosaukums: rinda: kolonna:" un MSVC formātā kā "faila nosaukums(rinda, kolonna)".
Šī funkcija var būt noderīga IDE cienītājiem.
Ir pievienota arī opcija "--verbose", kas parāda īsu uzvaras ziņojumu, ja tas izdodas.
Ir uzlabots “saderības” režīms ar flex - ir novērstas dažas parsēšanas kļūdas un
nepareiza operatora prioritāte retos gadījumos.
Vēsturiski opcija "-F --flex-suppor" ļāva rakstīt kodu
sajaukts flex stilā un re2c stilā, kas padara parsēšanu nedaudz sarežģītu.
Flex saderības režīms tiek reti izmantots jaunajā kodā,
bet re2c turpina to atbalstīt, lai nodrošinātu atpakaļejošu saderību.
Tagad tiek piemērots rakstzīmju klases atņemšanas operators "/".
pirms kodējuma paplašināšanas, kas ļauj to izmantot lielākā skaitā gadījumu,
ja tiek izmantots mainīga rakstzīmju garuma kodējums (piemēram, UTF8).
Izvades fails tagad tiek izveidots atomiski: re2c vispirms izveido pagaidu failu
un ieraksta tajā rezultātu un pēc tam pārdēvē pagaidu failu uz izvadi
viena operācija.
No izstrādātāju viedokļa re2c ir ieguvis pilnīgāku apakšsistēmu
atkļūdošana Atkļūdošanas kods tagad ir atspējots laidiena būvējumos un
var iespējot, izmantojot konfigurācijas opciju "--enable-debug".