A re2c 1.2 lexikai elemző generátor kiadása

Megvalósult kiadás re2c, egy szabad lexikai elemző generátor C és C++ nyelvekhez. Emlékeztetőül, a re2c-t 1993-ban Peter Bambulis írta, mint egy kísérleti generátort, amely nagyon gyors lexikai elemzőket generál, és más generátoroktól eltérően a generált kód sebessége és az a rendkívül rugalmas felhasználói felület jellemzi, amely lehetővé teszi az elemzők hatékony beépítését a meglévő kód alapba. Azóta a projekt a közösség által fejlődik, és továbbra is kísérletek és kutatások helyszíne a formális grammák és véges automaták terén.

A kiadás előkészítése csaknem egy évet vett igénybe. A legtöbb idő, mint mindig, a teoretikus alap kivitelezésére és a
cikk megírására ment el, amelynek címe:Efficient POSIX Submatch Extraction on NFA«.
A cikkben leírt algoritmusok az kísérleti libre2c könyvtárban találhatók.
(a könyvtár és a teljesítménytesztek összeállítása alapértelmezés szerint ki van kapcsolva, és a «—enable-libs» configure opcióval kapcsolható be). A könyvtár nem a már létező projektek, például az RE2 versenytársaként készült, hanem kutatási platformnak, amely új
algoritmusok kifejlesztésére szolgál (amelyek később felhasználhatók a re2c-ben vagy más projektekben). Emellett kényelmes tesztelés, teljesítménymérés és más nyelvekhez való kötődések létrehozása szempontjából is.

A re2c 1.2 verzió fő újdonságai:

  • Egy új, egyszerűsített megoldás került bevezetésre a bemeneti adatok végének ellenőrzésére („EOF rule”). Ehhez a „re2c:eof” konfiguráció került hozzáadásra,
    mely lehetővé teszi a terminális szimbólum kiválasztását,
    és egy speciális „$” szabály, amely akkor lép életbe, ha a lexer
    sikeresen elérte a bemeneti adatok végét.
    Történelmileg a re2c többféle módot kínál a bemeneti adatok végének
    ellenőrzésére, amelyek korlátozottság, hatékonyság és egyszerűség szempontjából változnak.
    Az új módszer célja, hogy egyszerűbbé tegye a kód írását, miközben
    továbbra is hatékony és széleskörűen alkalmazható marad. A régi módszerek
    továbbra is működnek, és bizonyos esetekben előnyben részesíthetők.
  • Lehetőség nyílt külső fájlok beillesztésére a direktívával,
    „/*!include:re2c «file.re» */”, ahol a „file.re” a beillesztett fájl neve. A re2c a beillesztett fájl könyvtárában keresi a fájlokat,
    valamint a „-I” opcióval megadott útvonalak listájában.
    A beillesztett fájlok más fájlokat is beilleszthetnek.
    A re2c „standard” fájlokat biztosít az „include/” könyvtárban
    a projektben — feltételezhető, hogy itt hasznos reguláris kifejezések definíciói gyűlnek össze,
    valami a standard könyvtár szellemében.
    Eddig a munkavállalók kérésére hozzáadásra került egy fájl a Unicode kategóriák definícióival.
  • Lehetőség nyílt önkényes
    tartalommal a „-t —type-header” opciók (vagy az annak megfelelő
    konfigurációk) és az új „/*!header:re2c:on*/” és
    „/*!header:re2c:off*/” direktívák segítségével. Ez hasznos lehet bizonyos esetekben,
    amikor a re2c-nek változók, struktúrák és makrók definícióit kell generálnia,
    melyek más fordítási egységekben használatosak.
  • A re2c most már értelmezi az UTF8 literálokat és a reguláris kifejezések karakterosztályait.
    Alapértelmezés szerint a re2c olyan kifejezéseket elemzi, mint a „∀x ∃y”, mint
    1-bites ASCII karakterek sorozatát „e2 88 80 78 20 e2 88 83 79”
    (hex kódok), és a felhasználóknak manuálisan kell escape-elniük a Unicode karaktereket:
    „\u2200x \u2203y”. Ez sokak számára nagyon kényelmetlen és váratlan.
    (amire folyamatos hibajelentések is utalnak). Ezért most
    A re2c lehetőséget biztosít a „—input-encoding {ascii | utf8}” opcióval,
    ami lehetővé teszi a viselkedés megváltoztatását, és a „∀x ∃y” elemzését
    úgy, hogy „2200 78 20 2203 79”.
  • A re2c mostantól lehetővé teszi a szokásos re2c blokkok használatát „-r —reuse” módban.
    Ez kényelmes, ha a bemeneti fájl sok blokkot tartalmaz, és csak néhányra
    van szükség újrahasználatra.
  • Lehetőség nyílt a figyelmeztetések és hibajelzések formátumának megadására
    az új «—location-format {gnu | msvc}» opcióval. A GNU-formátum megjelenése
    «fájlneve:sor:oszlop:», míg az MSVC-formátum így néz ki: «fájlneve(sor,oszlop)».
    Ez a lehetőség hasznos lehet az IDE kedvelőinek.
    Ezen kívül hozzáadódott a «—verbose» opció, amely siker esetén egy rövid győztes üzenetet jelenít meg.
  • Fejlesztettük a flex «kompatibilitás» módot — javítva néhány elemzési hibát és
    a műveletek helytelen prioritását ritka esetekben.
    Történelmileg az «-F —flex-suppor» opció lehetővé teszi a kód írását
    flex stílusban és re2c stílusban, ami némileg megnehezíti a szintaxis elemzését.
    A flex kompatibilitási mód ritkán használatos új kódban,
    de a re2c továbbra is támogatja a visszafelé kompatibilitás érdekében.
  • A szimbólum osztályok kivonásának operátora «/» mostantól alkalmazva van
    mielőtt a kódolás kifejtésre kerülne, ami lehetővé teszi a nagyobb alkalmazást,
    ha változó hosszúságú karakterkódolás (például UTF8) használatos.
  • A kimeneti fájl most atomikus módon készül el: a re2c először egy ideiglenes fájlt hoz létre
    és abba írja az eredményt, majd átnevezi az ideiglenes fájlt a kimeneti
    folyamat egy lépésben.
  • A dokumentációt kiegészítették és újraírták; különösen új
    fejezetekhez a http://re2c.org/manual/manual.html#buffer-refilling puffer feltöltése
    és az input adatok végének ellenőrzési módszereiről..
    Az új dokumentáció egy
    kimerítő egylapos útmutatóhoz
    példákkal (ugyanazok az források jelennek meg a manpage-ben és az online dokumentációban).
    Gyenge próbálkozásokat tettek a weboldal olvashatóságának javítására mobiltelefonokon.
  • A fejlesztők szempontjából a re2c egy teljesebb debuggáló alrendszert kapott.
    A debug kód mostanra ki van kapcsolva a kiadott verziókban.
    a configure opcióval «—enable-debug» engedélyezhető.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster