re2c 1.2

Perjantaina 2. elokuuta julkaistiin re2c, ilmainen leksikaalisten analysaattoreiden generaattori C- ja C++-kielille. Peter Bamboulis kirjoitti Re2c:n vuonna 1993 erittäin nopeiden leksikaalisten analysaattoreiden kokeelliseksi generaattoriksi, joka erottuu muista generaattoreista generoidun koodin nopeuden ja epätavallisen joustavan käyttöliittymän ansiosta, jonka avulla analysaattorit voidaan upottaa helposti ja tehokkaasti olemassa olevaan koodikantaan. Siitä lähtien yhteisö on kehittänyt hanketta, ja se on edelleen alustana kokeiluille ja tutkimukselle formaalien kielioppien ja äärellisten tilakoneiden alalla.

Tärkeimmät innovaatiot versiossa 1.2:

  • Lisätty uusi (yksinkertaistettu) tapa tarkistaa syöttötietojen loppuminen
    (englanniksi "EOF rule").
    Tätä varten on lisätty re2c:eof-kokoonpano,
    voit valita päätemerkin,
    ja erityinen $-sääntö, joka laukeaa, jos lexer
    saavutti syöttötietojen lopun onnistuneesti.
    Historiallisesti re2c tarjoaa valinnan useista vahvistusmenetelmistä
    rajoitusten, tehokkuuden ja yksinkertaisuuden suhteen vaihtelevien tulojen loppu
    sovellukset. Uusi menetelmä on suunniteltu yksinkertaistamaan koodin kirjoittamista
    samalla kun se pysyy tehokkaana ja laajalti sovellettavissa. Vanhat tavat
    toimii edelleen ja saattaa olla joissain tapauksissa parempi.

  • Lisätty mahdollisuus sisällyttää ulkoisia tiedostoja käskyn avulla
    /*!include:re2c "tiedosto.re" */ missä tiedosto.re
    tämä on sisällytettävän tiedoston nimi. Re2c etsii tiedostoja sisältäen tiedostohakemiston,
    sekä -I-vaihtoehdolla määritettyjen polkujen luettelossa.
    Mukana olevat tiedostot voivat sisältää muita tiedostoja.
    Re2c tarjoaa "standardi" tiedostot hakemistossa include/
    hanke - siellä odotetaan kertyvän hyödyllisiä määritelmiä
    säännöllisiä lausekkeita, kuten tavallinen kirjasto.
    Tähän mennessä työntekijöiden pyynnöstä on lisätty yksi tiedosto Unicode-luokkien määritelmillä.

  • Lisätty mahdollisuus luoda otsikkotiedostoja mielivaltaisilla
    sisältöä käyttämällä -t --type-header-vaihtoehtoja (tai sopivaa
    kokoonpanot) ja uudet direktiivit /*!header:re2c:on*/ ja
    /*!header:re2c:off*/. Tästä voi olla hyötyä tapauksissa, joissa
    kun re2c:n on luotava muuttujien, rakenteiden ja makrojen määritelmiä,
    käytetään muissa käännösyksiköissä.

  • Re2c ymmärtää nyt UTF8-literaaleja ja merkkiluokkia säännöllisissä lausekkeissa.
    Oletuksena re2c jäsentää lausekkeet, kuten "∀x ∃y" muodossa.
    1-bittisten ASCII-merkkien sarja e2 88 80 78 20 e2 88 83 79
    (heksadesimaalikoodit), ja käyttäjien on poistettava Unicode-merkit manuaalisesti:
    "u2200x u2203y". Tämä on monille erittäin epämiellyttävää ja odottamatonta
    käyttäjille (kuten jatkuvat virheraportit osoittavat). Joten nyt
    re2c tarjoaa --input-encoding -vaihtoehdon ,
    jonka avulla voit muuttaa käyttäytymistä ja jäsentää "∀x ∃y" muodossa
    2200 78 20 2203 79.

  • Re2c sallii nyt tavallisten re2c-lohkojen käytön -r --reuse -tilassa.
    Tämä on kätevää, jos syöttötiedosto sisältää useita lohkoja ja vain osan niistä
    on käytettävä uudelleen.

  • Nyt voit määrittää varoitusten ja virheilmoitusten muodon
    käyttämällä uutta --location-format -vaihtoehtoa . GNU-muoto tulee näkyviin
    muodossa tiedostonimi:rivi:sarake: ja MSVC-muodossa tiedostonimi(rivi,sarake).
    Tämä ominaisuus voi olla hyödyllinen IDE-ystäville.
    Myös --verbose-vaihtoehto on lisätty, joka tulostaa lyhyen voittoviestin onnistuessaan.

  • "Yhteensopivuus"-tilaa flexin kanssa on parannettu - jotkut jäsennysvirheet on korjattu ja
    väärä operaattorin etusija harvoissa tapauksissa.
    Historiallisesti -F --flex-support -vaihtoehto mahdollisti koodin kirjoittamisen
    sekoitettu flex-tyyliin ja re2c-tyyliin, mikä tekee jäsentämisestä hieman vaikeaa.
    Flex-yhteensopivuustilaa käytetään harvoin uudessa koodissa,
    mutta re2c tukee sitä edelleen taaksepäin yhteensopivuuden takaamiseksi.

  • Merkkiluokan vähennysoperaattori / on nyt voimassa
    ennen koodauksen laajentamista, mikä mahdollistaa sen käytön useammissa tapauksissa,
    jos käytetään muuttuvan merkin pituista koodausta (esimerkiksi UTF8).

  • Tulostiedosto luodaan nyt atomisesti: re2c luo ensin väliaikaisen tiedoston
    ja kirjoittaa tuloksen siihen ja nimeää sitten väliaikaisen tiedoston uudelleen tulosteeksi
    yksi operaatio.

  • Dokumentaatio täydennettiin ja kirjoitettiin uudelleen; varsinkin uusia lisättiin
    pää puskurin täyttämisestä
    и tavoista tarkistaa syöttötietojen loppuminen.
    Uusi dokumentaatio kerätään lomakkeeseen
    kattava yksisivuinen käsikirja
    esimerkein (samat lähteet esitetään mansivulla ja online-dokumentaatiossa).
    Sivuston luettavuutta puhelimissa on yritetty parantaa huonosti.

  • Kehittäjien näkökulmasta re2c on hankkinut täydellisemmän alijärjestelmän
    virheenkorjaus Vianetsintäkoodi on nyt poistettu käytöstä julkaisuversioissa ja
    voidaan ottaa käyttöön käyttämällä konfigurointivaihtoehtoa --enable-debug.

Tämä julkaisu kesti kauan - melkein koko vuoden.
Suurin osa ajasta, kuten aina, meni teoreettisen viitekehyksen kehittämiseen ja kirjoittamiseen
Artikkeli "Tehokas POSIX Submatch Extraction on NFA".
Artikkelissa kuvatut algoritmit on toteutettu kokeellisessa kirjastossa libre2c
(kirjaston ja vertailuarvojen luominen on oletusarvoisesti pois käytöstä ja se otetaan käyttöön configure-vaihtoehdolla
--enable-libs). Kirjastoa ei ole suunniteltu kilpailijaksi olemassa oleville
RE2:n kaltaisiin hankkeisiin, vaan tutkimusalustana uusien kehittämiseen
algoritmeja (jotka voidaan sitten käyttää re2c:ssä tai muissa projekteissa).
Se on kätevä myös testauksen, benchmarkin ja muiden kielten sidosten luomisen kannalta.

Kiitos re2c-kehittäjiltä kaikille, jotka auttoivat tämän julkaisun toteutumisessa,
ja yhteisölle yleensä ideoita, vikailmoituksia, korjauksia, moraalia jne. ;]

Lähde: linux.org.ru

Lisää kommentti