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
é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
