Július 20-án, hétfőn megjelent a re2c – a gyors lexikai elemzők generátora.
Főbb változások:
Hozzáadva a Go nyelv támogatása
(a re2c esetén —lang go opcióval, vagy külön programként re2go formájában).
A C és Go dokumentáció ugyanabból a szövegből generálódik, de eltérő
példakódokkal. A re2c kódgeneráló alrendszere teljesen át lett dolgozva, ami
megkönnyíti az új nyelvek támogatását a jövőben.-
A re2c CMake-ra való átültetési kísérletei már régóta folynak, de ligfx előtt senki sem
ajánlott teljes megoldást.
A régi Autotools build rendszert továbbra is támogatják és használják,
és a közeli jövőben nincsenek tervek annak elhagyására (részben, hogy ne okozzon
problémát a disztribútoroknak, részben pedig azért, mert a régi build rendszer
stabilabb és tömörebb, mint az új).
Mindkét rendszer folyamatosan tesztelve van a Travis CI segítségével. Lehetőség van interfészkód megadására az konfigurációkban a
generic API használata mellett. Korábban a legtöbb API-t funkciók vagy funkcionális makrók formájában kellett megadni.
Most már szabad szövegként, névvel ellátott sablonparaméterek formájában is megadhatók, mint például @@{name} vagy egyszerűen @@ (ha
csak egy paraméter van, és nincs kétértelműség). Az API stílusát a re2c:api:style konfiguráció határozza meg (a functions érték funkcionális stílust ad meg, míg a free-form a szabad formát).
Javult az -c, —start-conditions opció működése, amely lehetővé teszi több
kapcsolódó lexers egy re2c-blokkban történő összekapcsolását. Mostantól használhatók ahagyományos blokkok a feltételesekkel együtt, és több egymástól független feltételes
blokk is létrehozható egy fájlban.
Javult az -r, —reuse (kód újrafelhasználás egy blokkban
más blokkokban) működése az -c, —start-conditions és -f, —storable-state opciókkal kombinálva
(lexer mentett állapottal, amely akármelyik ponton megszakítható
és később folytatható).
Javították a közelmúltban hozzáadott EOF (End of File) feldolgozó algoritmus hibáját,
amely ritka esetekben helytelen feldolgozási eredményhez vezetettátfedő szabályok esetén.
Egyszerűsödött a bootstrapping folyamata. Korábban a build rendszer megpróbálta dinamikusan megtalálni az már
összeállított re2c-t, amely felhasználható lett volna önmagának az újraépítésére.Egyszerűsödött a bootstrap folyamat. Korábban a build rendszer dinamikusan próbálta megkeresni a már
összeállított re2c-t, amelyet saját magának az újbóli összeállításához használhatott.
Ez hibás függőségekhez vezetett (mivel a függőségi gráf dinamikus lett, amit a legtöbb építési rendszer nem szeret).
dinamikus, amiért a legtöbb build rendszer nem kedveli őt).
Mostantól a lexer-ek újraépítéséhez kifejezetten konfigurálni kell az építési rendszert és be kell állítani az RE2C_FOR_BUILD változót.
Köszönet mindenkinek, aki részt vett ennek a kiadásnak az előkészítésében!
🥇re2c 2.0 | ProHoster
Forrás: linux.org.ru
