re2c 1.2

Augusztus 2-án, pénteken megjelent a re2c, a C és C++ nyelvek lexikális elemzőinek ingyenes generátora. A Re2c-t 1993-ban írta Peter Bamboulis, mint nagyon gyors lexikális elemzők kísérleti generátorát, amelyet a generált kód sebessége és a szokatlanul rugalmas felhasználói felület különböztet meg a többi generátortól, amely lehetővé teszi az analizátorok egyszerű és hatékony beágyazását egy meglévő kódbázisba. Azóta a projektet a közösség fejlesztette ki, és továbbra is a formális nyelvtanok és a véges állapotú gépek területén végzett kísérletek és kutatások platformja.

Főbb újítások az 1.2-es verzióban:

  • Új (egyszerűsített) módszer hozzáadva a bemeneti adatok végének ellenőrzéséhez
    (angolul „EOF rule”).
    Ehhez hozzáadtuk a re2c:eof konfigurációt,
    lehetővé teszi a terminál karakter kiválasztását,
    és egy speciális $-szabály, amely akkor indul el, ha a lexer
    sikeresen elérte a bemeneti adatok végét.
    Korábban a re2c számos ellenőrzési módszer közül választhat
    vége a bemenetek, amelyek korlátozottságban, hatékonyságban és egyszerűségben változnak
    alkalmazások. Az új módszer a kódírás egyszerűsítésére szolgál, míg
    miközben hatékony és széles körben alkalmazható. Régi módok
    továbbra is működik, és bizonyos esetekben előnyben részesíthető.

  • Hozzáadtuk a külső fájlok direktívával történő felvételének lehetőségét
    /*!include:re2c "file.re" */ ahol file.re
    ez az include fájl neve. A Re2c a fájlokat tartalmazó könyvtárban keres fájlokat,
    valamint a -I kapcsolóval megadott elérési utak listájában.
    A mellékelt fájlok más fájlokat is tartalmazhatnak.
    A Re2c "standard" fájlokat biztosít az include/ könyvtárban
    projekt – várhatóan hasznos definíciók halmozódnak fel ott
    reguláris kifejezések, valami hasonló a szabványos könyvtárhoz.
    Eddig a dolgozók kérésére egy fájl került hozzáadásra a Unicode kategóriák definícióival.

  • Hozzáadtuk a tetszőleges fejlécfájlok generálásának lehetőségét
    tartalom a -t --type-header opciókkal (vagy megfelelő
    konfigurációk) és az új direktívák /*!header:re2c:on*/ és
    /*!header:re2c:off*/. Ez hasznos lehet olyan esetekben, amikor
    amikor a re2c-nek változók, struktúrák és makrók definícióit kell generálnia,
    más fordítási egységekben használják.

  • A Re2c mostantól megérti az UTF8 literálokat és karakterosztályokat a reguláris kifejezésekben.
    Alapértelmezés szerint a re2c az olyan kifejezéseket, mint a "∀x ∃y", mint.
    1 bites ASCII karakterek sorozata e2 88 80 78 20 e2 88 83 79
    (hex kódok), és a felhasználóknak kézzel kell kihagyniuk a Unicode karaktereket:
    "u2200x u2203y". Ez sokak számára nagyon kellemetlen és váratlan
    felhasználók (amint azt az állandó hibajelentések igazolják). Tehát most
    A re2c egy --input-encoding opciót biztosít ,
    amely lehetővé teszi a viselkedés megváltoztatását és a „∀x ∃y” elemzését, mint
    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 akkor kényelmes, ha a bemeneti fájl sok blokkot tartalmaz, és csak néhányat
    újra kell használni.

  • Most beállíthatja a figyelmeztetések és hibaüzenetek formátumát
    az új --location-format opció használatával . GNU formátum jelenik meg
    mint fájlnév:sor:oszlop:, az MSVC formátum pedig fájlnév(sor,oszlop).
    Ez a funkció hasznos lehet az IDE szerelmeseinek.
    Egy --verbose opció is hozzáadásra került, amely sikeres esetben egy rövid győzelmi üzenetet nyomtat.

  • A „kompatibilitási” mód a flex-szel javult – kijavítottunk néhány elemzési hibát, és
    ritka esetekben helytelen operátori prioritás.
    Korábban az -F --flex-support opció lehetővé tette a kód írását
    flex stílusban és re2c stílusban keverve, ami kissé megnehezíti az elemzést.
    A Flex kompatibilitási módot ritkán használják az új kódokban,
    de a re2c továbbra is támogatja a visszafelé kompatibilitás érdekében.

  • A / karakterosztályú kivonási operátor most érvényes
    a kódolás bővítése előtt, amely lehetővé teszi, hogy több esetben is használható legyen,
    ha változó karakterhosszúságú kódolást használunk (például UTF8).

  • A kimeneti fájl most atomszerűen jön létre: a re2c először létrehoz egy ideiglenes fájlt
    és beleírja az eredményt, majd átnevezi az ideiglenes fájlt a kimenetre
    egy műveletet.

  • A dokumentáció elkészült és újraírták; különösen újak kerültek hozzá
    fejezetek a puffer kitöltésével kapcsolatban
    и a bemeneti adatok végének ellenőrzésének módjairól.
    Az új dokumentációt a nyomtatványban gyűjtjük össze
    átfogó, egyoldalas kézikönyv
    példákkal (ugyanazok a források jelennek meg a manoldalon és az online dokumentációban).
    Gyenge próbálkozások történtek az oldal telefonos olvashatóságának javítására.

  • A fejlesztők szemszögéből nézve a re2c egy teljesebb alrendszert kapott
    hibakeresés A hibakeresési kód most le van tiltva a kiadás buildekben és
    az --enable-debug configure paraméterrel engedélyezhető.

Ez a kiadás hosszú ideig tartott - majdnem egy teljes évig.
Az idő nagy részét, mint mindig, az elméleti keret kidolgozásával és az írással töltötték
Cikk "Hatékony POSIX szubmatch kivonás az NFA-n".
A cikkben leírt algoritmusok a libre2c kísérleti könyvtárban vannak implementálva
(a könyvtár és a referenciaértékek létrehozása alapértelmezés szerint le van tiltva, és a konfigurálás opció engedélyezi
--enable-libs). A könyvtár nem a létező versenytársa
olyan projektek, mint a RE2, hanem új fejlesztések kutatási platformjaként
algoritmusok (amelyek ezután használhatók a re2c-ben vagy más projektekben).
Kényelmes a tesztelés, a benchmarkok és más nyelvekhez való kötések létrehozása szempontjából is.

Köszönet a re2c fejlesztőitől mindenkinek, aki segítette a kiadást,
és általában a közösségnek ötleteket, hibajelentéseket, javításokat, morált stb. ;]

Forrás: linux.org.ru

Hozzászólás