A re2c lexer generator 2.0 kiadása

került sor kiadás re2c 2.0, egy ingyenes lexikális elemző generátor C és C++ nyelvekhez. A re2c projektet eredetileg 1993-ban Peter Bamboulis hozta létre a nagyon gyors lexikális elemzők kísérleti generátoraként, 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ő rendszerbe. kódbázis. 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.

Nagy változások:

  • Hozzáadott támogatás a Go nyelvhez (vagy a „--lang go” opcióval engedélyezve a re2c számára, vagy külön re2go programként). A C és Go dokumentációja ugyanabból a szövegből jön létre, de különböző kódpéldákkal. 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!). A re2c-t CMake-re már régóta próbálták lefordítani, de a ligfx-ig senki sem javasolt teljes értékű megoldást. A régi Autotools build rendszert továbbra is támogatják és használják, és a belátható jövőben nem tervezik felhagyni vele (részben azért, hogy ne okozzanak problémákat a disztribúciós fejlesztőknek, részben azért, mert a régi build rendszer stabilabb és tömörebb, mint az új ). Mindkét rendszert folyamatosan tesztelik a Travis CI segítségével.
  • Hozzáadtuk az interfészkód megadásának lehetőségét a konfigurációkban az általános API használatakor. Korábban a legtöbb API-t függvények vagy függvénymakrók formájában kellett megadni. Mostantól tetszőleges karakterláncok formájában adhatók meg „@@{név}” vagy egyszerűen „@@” alakú elnevezett sablonparaméterekkel (ha csak egy paraméter van, és nincs kétértelműség). Az API stílust a re2c:api:style konfiguráció állítja be (a függvények értéke a funkcionális stílust, a szabad forma pedig tetszőleges stílust ad meg).
  • A „-c”, „—start-feltételek” opció működése továbbfejlesztett, lehetővé téve több összekapcsolt lexer kombinálását egy re2c blokkban. Mostantól normál blokkokat is használhat feltételes blokkokkal együtt, és több nem kapcsolódó feltételes blokkot is meghatározhat egy fájlban. A "-r", "--reuse" opció továbbfejlesztett működése (egy blokk kódjának újrafelhasználása más blokkokban) a "-c", "--start-conditions" és "-f", "--" kombinációval. tárolható állapot" opciók (egy állapottartó lexer, amely bármikor megszakítható és a végrehajtás később folytatható).
  • Kijavítottuk a nemrég hozzáadott bevitelvégi (EOF rule) algoritmus hibáját, amely ritka esetekben az átfedő szabályok helytelen feldolgozását eredményezte.
  • A bootstrap folyamat leegyszerűsödött. Korábban a build rendszer próbált dinamikusan találni egy már megépített re2c-t, amivel újraépíthető volt. Ez helytelen függőségekhez vezetett (mivel a függőségi gráf dinamikus volt, amit a legtöbb build rendszer nem szeret). Most a lexerek újraépítéséhez explicit módon be kell állítani a build rendszert, és be kell állítani a RE2C_FOR_BUILD változót.

Forrás: opennet.ru

Hozzászólás