Piektdien, 2. augustÄ, tika izlaists re2c, bezmaksas leksisko analizatoru Ä£enerators C un C++ valodÄm. Re2c 1993. gadÄ uzrakstÄ«ja PÄ«ters 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 iegult analizatorus esoÅ”Ä kodu bÄzÄ. 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Ä.
Galvenie jauninÄjumi versijÄ 1.2:
Pievienots jauns (vienkÄrÅ”ots) veids, kÄ pÄrbaudÄ«t ievades datu beigas
(angļu valodÄ āEOF ruleā).
Å im nolÅ«kam ir pievienota re2c:eof konfigurÄcija,
ļauj izvÄlÄties terminÄļa rakstzÄ«mi,
un īpaŔs $ noteikums, kas atlaižas, 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 fails.re
Å”is ir iekļautÄ 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 jaunas 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 -- ievades kodÄÅ”anas opciju ,
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 --location-format opciju . 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 izdrukÄ Ä«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-support ļÄ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ÄÅ”anas opciju --enable-debug.
Šī izlaiŔana prasīja ilgu laiku - gandrīz veselu gadu.
LielÄko daļu laika, kÄ vienmÄr, pavadÄ«ja teorÄtiskÄ ietvara izstrÄde un rakstÄ«Å”ana
Raksts "EfektÄ«va POSIX apakÅ”spÄļu ekstrakcija uz NFA".
RakstÄ aprakstÄ«tie algoritmi ir realizÄti eksperimentÄlajÄ bibliotÄkÄ libre2c
(bibliotÄkas un etalonu veidoÅ”ana pÄc noklusÄjuma ir atspÄjota un iespÄjota, izmantojot opciju konfigurÄt
--enable-libs). BibliotÄka nav iecerÄta kÄ konkurente esoÅ”ajai
tÄdiem projektiem kÄ 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, etalonu un citu valodu saiÅ”u veidoÅ”anas viedokļa.
Paldies no re2c izstrÄdÄtÄjiem visiem, kas palÄ«dzÄja izdot Å”o izdevumu.
un kopienai kopumÄ par idejÄm, kļūdu ziÅojumiem, ielÄpiem, morÄli utt. ;]