re2c 2.0

Július 20-án, hétfőn megjelent a re2c, egy gyors lexikális elemző generátor.
Nagy változások:

  • Támogatás hozzáadva a Go nyelvhez
    (vagy a --lang go opcióval engedélyezhető a re2c-hez, vagy önálló re2go programként).
    A C és Go dokumentációja ugyanabból a szövegből jön létre, de eltérő
    kódpéldák. A re2c kódgeneráló alrendszerét teljesen újratervezték, ami
    megkönnyíti az új nyelvek támogatását a jövőben.

  • Alternatív build rendszer hozzáadva a CMake-hez (köszönjük ligfx!).
    Régóta próbálták lefordítani a re2c-t CMake-re, de a ligfx előtt senki sem
    teljes megoldást kínált.
    Az Autotools régi build rendszere továbbra is támogatott és használatos,
    és a belátható jövőben nem tervezik felhagyni vele (részben azért, hogy ne hozzon létre
    problémák a terjesztési fejlesztők számára, részben a régi build rendszer miatt
    stabilabb és tömörebb, mint az új).
    Mindkét rendszert egyformán folyamatosan tesztelik a Travis CI segítségével.

  • Hozzáadtuk az interfész kód beállításának lehetőségét a konfigurációkban használat közben
    általános API (általános API). Korábban a legtöbb API-t meg kellett adni az űrlapon
    függvények vagy függvénymakrók. Most beállíthatók tetszőleges formában
    karakterláncok elnevezett sablonparaméterekkel @@{név} vagy csak @@ (ha
    csak egy paraméter van, és nincs kétértelműség). Az API stílus konfigurálható
    re2c:api:style (a függvények értéke a funkcionális stílust adja meg, míg a szabad formájú érték tetszőleges).

  • A -c, --start-conditions opció továbbfejlesztett működése, amely lehetővé teszi több kombinálását
    összekapcsolt lexerek egy re2c blokkban. Most már használhatja
    közönséges blokkokat a feltételes blokkokkal egyenrangú, és több, egymással nem összefüggő feltételt állít be
    blokkok egy fájlban.
    Továbbfejlesztett -r, --reuse opciók (egy blokkból származó kód újrafelhasználása
    más blokkokban) a -c, --start-conditions és -f, --storable-state opciókkal kombinálva
    (egy állapotjelző lexer, amely tetszőleges helyen megszakítható
    és később folytassa a végrehajtást).

  • Javítva egy hiba az újonnan hozzáadott, a bemeneti adatok végének kezelésére szolgáló algoritmusban
    (EOF szabály), ami ritka esetekben hibás feldolgozáshoz vezetett
    egymást átfedő szabályok.

  • Egyszerűsített bootstrap folyamat. Korábban a build rendszer már dinamikusan próbált keresni
    épített re2c-t, amivel újjá lehetett építeni magát.
    Ez helytelen függőségekhez vezetett (mivel a függőségi gráf kiderült
    dinamikus, amit a legtöbb build rendszer nem szeret).
    Most a lexerek újjáépítéséhez kifejezetten szükséges
    konfigurálja a build rendszert, és állítsa be a RE2C_FOR_BUILD változót.

Köszönjük mindenkinek, aki hozzájárult ehhez a kiadáshoz!

Forrás: linux.org.ru

Hozzászólás