re2c 1.2

Augusztus 2-án, pénteken megjelent a re2c, a C és C++ nyelvekhez készült lexikális elemzők szabad генераторja. Emlékeztetőül, a re2c-t 1993-ban Peter Bambulis írta, mint egy kísérleti генераторt, amely nagyon gyors lexikális elemzők előállítására szolgál, és a generált kód sebessége, valamint a meglévő kódalapba való könnyű integrálhatóság tekintetében más генераторoktól eltérően rendkívül rugalmas felhasználói felülettel rendelkezik. Azóta a projekt a közösség által fejlődik, és továbbra is kísérletezésre és formális gramatikák, valamint véges automaták kutatására szolgáló platformként működik.

Az 1.2-es verzió főbb újdonságai:

  • Új (egyszerűsített) mód került hozzáadásra a bemeneti adatok végének ellenőrzésére
    (angolul „EOF rule”).
    Ehhez hozzáadva a re2c:eof konfigurációt,
    mely lehetővé teszi a terminális szimbólum kiválasztását,
    valamint egy speciális $, amely akkor aktiválódik, 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" */, где file.re
    ez a beillesztett fájl neve. A re2c a beillesztett fájl könyvtárában keresi a fájlokat,
    valamint az -I opcióval megadott elérési utak listájában.
    A beillesztett fájlok más fájlokat is beilleszthetnek.
    A re2c „szabványos” 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
    tartalmú fejlécfájlok generálására az -t —type-header (vagy megfelelő
    konfigurációk) opciók és az új direktívák /!header:re2c:on/ által,
    /*!header:re2c:off*/. Это может быть полезно в случаях,
    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".
    1-bites ASCII karakterek sorozata 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 sok felhasználó 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 —input-encoding ,
    ami lehetővé teszi a viselkedés megváltoztatását és a "∀x ∃y" elemzését
    2200 78 20 2203 79.

  • A re2c most lehetővé teszi a szokásos re2c blokkok használatát -r módban —reuse.
    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 opcióval. A GNU formátum így jelenik meg:
    filename:line:column:, míg az MSVC formátum így: filename(line,column).
    Ez a lehetőség hasznos lehet az IDE kedvelőinek.
    Ezenkívül hozzáadódott a —verbose opció, amely siker esetén rövid győzelmi üzenetet jelenít meg.

  • Továbbfejlesztésre került a "kompatibilitás" mód a flex-szel — javították a parszolás néhány hibáját és
    a műveletek helytelen prioritását ritka esetekben.
    Történelmileg a -F —flex-support opció lehetővé tette a kód keveré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 karakterosztályok kivonási operátora / most alkalmazásra kerül
    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
    fejezetek kerültek hozzáadásra a puffertöltésről
    és az input adatok végének ellenőrzési módszereiről..
    Az új dokumentáció egy
    átfogó egyoldalas kézikönyv formájában készült
    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 konfigurációs opcióval aktiválható -enable-debug.

Ez a kiadás hosszú időt vett igénybe - szinte egy évet.
Mint mindig, a legtöbb idő a teoretikai alapok kidolgozására és a megírásra ment el
cikkből származnak «Hatékony POSIX al-illesztési kinyerés NFA-on».
A cikkben leírt algoritmusok az kísérleti libre2c könyvtárban találhatók.
(a könyvtár és az benchmarkok fordítása alapértelmezetten ki van kapcsolva, és a konfigurációs opcióval kapcsolható be
-enable-libs). A könyvtár nem a meglévő projektek, például az RE2 versenytársa, hanem egy kutatási platform új algoritmusok fejlesztéséhez
(amelyek később használhatók re2c-ben vagy más projektekben).
Ez a tesztelés, benchmarkok és más nyelvekhez való kötödés szempontjából is előnyös.
Köszönet a re2c fejlesztőitől mindenkinek, aki segített ezt a kiadást megvalósítani,

és a közösségnek az ötletekért, hibajelentésekért, javításokért, harci szellemért stb. ;]
Augusztus 2-án, pénteken megjelent a re2c - egy szabad lexikális elemzőgenerátor C és C++ nyelvekhez.

Forrás: linux.org.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