Izdanje re2c lexer generatora 1.2

odvijao puštanje re2c, besplatni generator leksičkog analizatora za jezike C i C++. Podsjetimo, re2c je 1993. godine napisao Peter Bambulis kao eksperimentalni generator vrlo brzih leksičkih analizatora, koji se od ostalih generatora razlikuje po brzini generiranog koda i neobično fleksibilnom korisničkom sučelju koje omogućuje jednostavnu i učinkovitu integraciju analizatora u postojeći kod. baza. Od tada je projekt razvijala zajednica i nastavlja biti platforma za eksperimente i istraživanja u području formalnih gramatika i konačnih automata.

Pripreme za izlazak trajale su gotovo cijelu godinu. Najviše vremena, kao i uvijek, utrošeno je na razvijanje teorijskog okvira i pisanje
članci "Učinkovito POSIX submatch ekstrakcija na NFA”.
Algoritmi opisani u članku implementirani su u eksperimentalnu knjižnicu libre2c
(izrada biblioteke i testovi performansi onemogućeni su prema zadanim postavkama i omogućeni su opcijom konfiguracije “—enable-libs”). Knjižnica nije zamišljena kao konkurencija postojećim projektima poput RE2, već kao istraživačka platforma za razvoj novih
algoritmi (koji se zatim mogu koristiti u re2c ili u drugim projektima). Također je pogodan sa stajališta testiranja, mjerenja performansi i stvaranja povezivanja s drugim jezicima.

Glavne inovacije u verziji re2c 1.2:

  • Dodana je nova pojednostavljena metoda za provjeru kraja ulaznih podataka ("EOF pravilo"). Za to je dodana konfiguracija "re2c:eof",
    omogućuje odabir znaka terminala,
    i posebno pravilo “$”, koje se pokreće ako lekser
    uspješno došao do kraja ulaznih podataka.
    Povijesno gledano, re2c nudi izbor nekoliko metoda verifikacije za
    kraj inputa koji se razlikuju po ograničenjima, učinkovitosti i jednostavnosti
    aplikacije. Nova metoda dizajnirana je za pojednostavljenje pisanja koda, dok
    ostajući učinkoviti i široko primjenjivi. Stari načini
    i dalje radi i može biti poželjan u nekim slučajevima.

  • Dodana je mogućnost uključivanja vanjskih datoteka pomoću direktive
    "/*!include:re2c "file.re" */", gdje je "file.re" naziv datoteke koju treba uključiti. Re2c traži datoteke u direktoriju uključujući datoteke,
    kao i u popisu putanja navedenih pomoću opcije “-I”.
    Uključene datoteke mogu uključivati ​​druge datoteke.
    Re2c pruža "standardne" datoteke u direktoriju "include/".
    projekt - očekuje se da će se tu akumulirati korisne definicije
    regularni izrazi, nešto poput standardne knjižnice.
    Do sada je na zahtjev radnika dodana jedna datoteka s definicijama Unicode kategorija.

  • Dodana mogućnost generiranja datoteka zaglavlja s proizvoljnim
    sadržaj koristeći opcije "-t --type-header" (ili odgovarajuće
    konfiguracije) i nove direktive "/*!header:re2c:on*/" i
    "/*!header:re2c:off*/". Ovo može biti korisno u slučajevima kada
    kada re2c treba generirati definicije varijabli, struktura i makronaredbi,
    koristi se u drugim prijevodnim jedinicama.

  • Re2c sada razumije UTF8 literale i klase znakova u regularnim izrazima.
    Prema zadanim postavkama, re2c analizira izraze poput "∀x ∃y" kao
    niz 1-bitnih ASCII znakova “e2 88 80 78 20 e2 88 83 79”
    (hex kodovi), a korisnici moraju ručno izbjeći Unicode znakove:
    "\\u2200x\\u2203y". To je za mnoge vrlo nezgodno i neočekivano
    korisnika (kao što svjedoče stalna izvješća o greškama). Pa sada
    re2c pruža opciju "--input-encoding {ascii | utf8}",
    što vam omogućuje promjenu ponašanja i raščlanjivanje “∀x ∃y” kao
    "2200 78 20 2203 79."

  • Re2c sada dopušta upotrebu regularnih re2c blokova u načinu "-r --reuse".
    Ovo je zgodno ako ulazna datoteka sadrži mnogo blokova i samo neke od njih
    treba ponovno upotrijebiti.

  • Sada možete postaviti format upozorenja i poruka o pogrešci
    koristeći novu opciju "--location-format {gnu | msvc}". Prikazuje se GNU format
    kao "ime datoteke: redak: stupac:", a MSVC format kao " naziv datoteke (redak, stupac)".
    Ova značajka može biti korisna za ljubitelje IDE.
    Dodana je i opcija "--verbose", koja prikazuje kratku poruku o pobjedi ako je uspješna.

  • Način rada "kompatibilnosti" s flexom je poboljšan - neke pogreške parsiranja su ispravljene i
    netočan prioritet operatora u rijetkim slučajevima.
    Povijesno, opcija "-F --flex-suppor" dopuštala vam je pisanje koda
    pomiješan u stilu flex i re2c stilu, što malo otežava raščlanjivanje.
    Način rada Flex kompatibilnosti rijetko se koristi u novom kodu,
    ali re2c ga nastavlja podržavati radi kompatibilnosti unazad.

  • Sada se primjenjuje operator oduzimanja klase znakova "/".
    prije proširenja kodiranja, što omogućuje korištenje u većem broju slučajeva,
    ako se koristi kodiranje promjenjive duljine znakova (na primjer UTF8).

  • Izlazna datoteka sada se stvara atomski: re2c prvo stvara privremenu datoteku
    i zapisuje rezultat u nju, a zatim preimenuje privremenu datoteku u izlaz
    jedna operacija.

  • Dokumentacija je dovršena i prerađena; posebice su dodane nove
    poglavlja o http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и o načinima provjere kraja ulaznih podataka.
    Nova dokumentacija prikuplja se u obrascu
    opsežan vodič na jednoj stranici
    s primjerima (isti su izvori prikazani na stranici priručnika iu online dokumentaciji).
    Učinjeni su loši pokušaji da se poboljša čitljivost stranice na telefonima.

  • Sa stajališta programera, re2c je dobio potpuniji podsustav
    otklanjanje pogrešaka Kod za otklanjanje pogrešaka sada je onemogućen u verzijama izdanja i
    može se omogućiti korištenjem konfiguracijske opcije "--enable-debug".

Izvor: opennet.ru

Dodajte komentar