re2c 1.2

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.

  • Dokumentācija tika aizpildÄ«ta un pārrakstÄ«ta; jo Ä«paÅ”i tika pievienoti jauni
    nodaļās par bufera aizpildīŔanu
    Šø par veidiem, kā pārbaudÄ«t ievades datu beigas.
    Jaunā dokumentācija tiek apkopota veidlapā
    visaptveroŔa vienas lapas rokasgrāmata
    ar piemēriem (tie paÅ”i avoti ir atveidoti manlapā un tieÅ”saistes dokumentācijā).
    Ir veikti slikti mēģinājumi uzlabot vietnes lasāmību tālruņos.

  • 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. ;]

Avots: linux.org.ru

Pievieno komentāru