Re2c lexer ģeneratora 1.2 izlaišana

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.

  • Dokumentācija tika aizpildīta un pārrakstīta; jo īpaši tika pievienoti jauni
    nodaļas par http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и 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ācijas opciju "--enable-debug".

Avots: opennet.ru

Pievieno komentāru