re2c 1.2

Piektdien, 2. augustā, tika izlaista re2c – brīvais leksisko analīzes ģenerators C un C++ valodām. Atgādinām, ka re2c tika uzrakstīts 1993. gadā Pīteram Bambulim kā eksperimentāls ļoti ātru leksisko analīzes ģenerators, kas atšķiras no citiem ģeneratoriem ar ģenerētā koda ātrumu un neparasti elastīgu lietotāja interfeisu, kas ļauj viegli un efektīvi integrēt analīzes rīkus esošajā kodu bāzē. Kopš tā laika projekts ir attīstījies kopienas rokās un turpina būt platforma ekspermentiem un pētījumiem par formālām gramatikām un galīgajiem automātiem.

Galvenās jauninājumi versijā 1.2:

  • Pievienots jauns (vienkāršots) veids, kā pārbaudīt piekļuvi ievades datiem
    (angl. “EOF rule”).
    Tam pievienota konfigurācija re2c:eof,
    kas ļauj izvēlēties terminālo simbolu,
    un īpaša noteikumu $, kas aktivizējas, ja leksers
    veiksmīgi ir sasniedzis ievades datu beigas.
    Vēsturiski re2c piedāvā dažādus veidus, kā veikt pārbaudi uz
    ievades datu beigām, kas atšķiras pēc ierobežojumiem, efektivitātes un vienkāršības
    izmantot. Jaunais veids ir paredzēts, lai atvieglotu koda rakstīšanu, tajā pašā laikā
    paliekot efektīvam un plaši izmantojamam. Vecie veidi
    joprojām darbojas un var būt priekšrocīgi atsevišķos gadījumos.

  • Pievienota iespēja iekļaut ārējās failus, izmantojot direktīvu
    /*!include:re2c "file.re" */, где file.re
    ir iekļautā faila nosaukums. Re2c meklē failus iekļautā faila direktorijā,
    kā arī sarakstā ar ceļiem, ko norādījusi opcija -I.
    Iekļautie faili var ietvert citus failus.
    Re2c nodrošina „standartizētus” failus direktorijā include/
    projekta — tiek pieņemts, ka tur tiks uzkrāti lietderīgi definīcijas
    regulāriem izteikumiem, kaut kas līdzīgs standarta bibliotēkai.
    Šobrīd pēc pieprasījuma ir pievienots viens fails ar Unicode kategoriju definīcijām.

  • Pievienota iespēja ģenerēt galvenes failus ar patvaļīgu
    ar saturu, izmantojot opcijas -t —type-header (vai attiecīgās
    konfigurācijas) un jaunās direktīvas /*!header:re2c:on*/ un
    /*!header:re2c:off*/. Это может быть полезно в случаях,
    kad re2c jāģenerē mainīgo, struktūru un makro definīcijas,
    kas tiek izmantotas citās tulkošanas vienībās.

  • Re2c tagad saprot UTF8 literāļus un simbolu klases regulāros izteikumos.
    Pēc noklusējuma re2c parsē izteiksmes kā "∀x ∃y" kā.
    secību 1-bitu ASCII simbolu e2 88 80 78 20 e2 88 83 79
    (hex kodi), un lietotājiem nākas manuāli izvairīties no Unicode simboliem:
    "u2200x u2203y". Tas ir ļoti neērti un negaidīti daudziem
    lietotājiem (par ko liecina nepārtrauktie kļūdu ziņojumi). Tādēļ tagad
    re2c nodrošina opciju —input-encoding ,
    kas ļauj mainīt uzvedību un parsēt "∀x ∃y" kā
    2200 78 20 2203 79.

  • Re2c tagad ļauj izmantot parastus re2c blokos režīmā -r —reuse.
    Tas ir ērti, ja ieejas fails satur daudz bloku, bet tikai daļa no tiem
    prasa atkārtotu izmantošanu.

  • Pievienota iespēja noteikt brīdinājumu un kļūdu ziņojumu formātu
    ar jauno opciju —location-format . GNU formāts tiek parādīts
    kā filename:line:column:, bet MSVC formāts — kā filename(line,column).
    Šī iespēja var noderēt IDE entuziastiem.
    Tāpat pievienota opcija —verbose, kas izvada īsu uzvaru paziņojumu gadījumā panākumiem.

  • Tika uzlabots „saderības” režīms ar flex — labotas dažas parsēšanas kļūdas un
    nepareiza operatoru prioritāte retajos gadījumos.
    Vēsturiski opcija -F —flex-support ļauj uzrakstīt kodu
    tajā pašā laikā gan flex, gan re2c stilā, kas mazliet apgrūtina sintaktisko parsēšanu.
    Saderības režīms ar flex reti tiek izmantots jaunajā kodā,
    bet re2c turpina to atbalstīt atpakaļsaderības nolūkiem.

  • Simbolu klašu atņemšanas operators / tagad tiek piemērots
    līdz kodējuma izveidošanai, kas ļauj to izmantot vairākos gadījumos,
    ja tiek izmantota mainīga garuma simbolu kodējuma (piemēram, UTF8).

  • Izvades fails tagad tiek izveidots atomārā veidā: re2c vispirms izveido pagaidu failu
    un raksta tajā rezultātu, pēc tam pārdēvē pagaidu failu par izvades
    vienā operācijā.

  • Dokumentācija tika papildināta un pārrakstīta; jo īpaši tika pievienotas jaunas
    pārgaldam par bufera aizpildīšanu
    un par veidiem, kā pārbaudīt, vai ir sasniegts ieeju datu gals.
    Jaunā dokumentācija ir apkopota
    izsmeļošas vienas lapas rokasgrāmatas
    ar piemēriem (tie paši avoti tiek attēloti gan manlapā, gan tiešsaistes dokumentācijā).
    Tika veikti pavādi mēģinājumi uzlabot vietnes lasāmību mobilajos tālruņos.

  • Izstrādātāju skatījumā re2c ieguva pilnvērtīgāku atkļūdošanas apakšsistēmu.
    Atkļūdošanas kods tagad ir izslēgts izlaišanas būvētās versijās un
    var iekļaut, izmantojot konfigurācijas opciju —enable-debug.

Šis izlaidums prasīja ilgu laiku — gandrīz gadu.
Visvairāk laika, kā parasti, tika pavadīts teorētiskās bāzes izstrādē un rakstīšanā
raksti „Efficient POSIX Submatch Extraction on NFA”.
Algoritmi, kas aprakstīti rakstā, ir realizēti eksperimentos bibliotēkā libre2c
(bibliotēkas un veiktspējas pārbaudes komplektu izveide pēc noklusējuma ir izslēgta un to var aktivizēt ar configure opciju
--enable-libs). Bibliotēka nav domāta kā konkurente jau esošajiem
projektiem, piemēram, RE2, bet gan kā pētniecības platforma jaunu
algoritmu izstrādei (kuri vēlāk var tikt izmantoti re2c vai citos projektos).
Tas arī ir ērti testēšanas, veiktspējas pārbaudes un saistīšanas ar citiem valodām ziņā.

Paldies no re2c izstrādātājiem visiem, kas palīdzēja šī izlaiduma īstenošanā,
un visai kopienai par idejām, kļūdu ziņojumiem, ielāpiem, cīņas garu utt. ;]

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