re2c 2.0

Måndagen den 20 juli släpptes re2c, en snabb lexikalanalysgenerator.
Huvudändringar:

  • Lagt till stöd för Go-språket
    (aktiverat antingen med --lang go-alternativet för re2c, eller som ett fristående re2go-program).
    Dokumentationen för C och Go är genererad från samma text, men med olika
    kodexempel. Kodgenereringsdelsystemet i re2c har gjorts om helt, vilket
    borde göra det lättare att stödja nya språk i framtiden.

  • Lade till alternativt byggsystem på CMake (tack ligfx!).
    Försök att översätta re2c till CMake har gjorts under lång tid, men innan ligfx ingen
    erbjöd en helhetslösning.
    Det gamla byggsystemet på Autotools fortsätter att stödjas och användas,
    och inom överskådlig framtid finns det inga planer på att överge det (delvis för att inte skapa
    problem för distributionsutvecklare, delvis på grund av det gamla byggsystemet
    mer stabil och koncis än den nya).
    Båda systemen testas lika kontinuerligt med Travis CI.

  • Lade till möjligheten att ställa in gränssnittskoden i konfigurationer vid användning
    generiskt API (generiskt API). Tidigare behövde de flesta API:er anges i formuläret
    funktioner eller funktionsmakron. Nu kan de ställas in i form av godtyckliga
    strängar med namngivna mallparametrar av formen @@{name} eller bara @@ (om
    det finns bara en parameter och det finns ingen tvetydighet). API-stil är konfigurerbar
    re2c:api:style (funktionsvärdet anger den funktionella stilen, medan värdet i fritt format är godtyckligt).

  • Förbättrad funktion av alternativet -c, --start-villkor, som låter dig kombinera flera
    sammankopplade lexers i ett re2c-block. Nu kan du använda
    vanliga block i nivå med villkorliga och sätta flera orelaterade villkorliga
    block i en fil.
    Förbättrade -r, --reuse-alternativ (återanvändning av kod från ett block
    i andra block) i kombination med alternativen -c, --startvillkor och -f, --storable-state
    (en tillståndsfull lexer som kan avbrytas på en godtycklig plats
    och fortsätta körningen senare).

  • Fixade en bugg i den nyligen tillagda algoritmen för hantering av slutet av indata
    (EOF-regeln), vilket i sällsynta fall ledde till felaktig handläggning
    överlappande regler.

  • Förenklad bootstrap-process. Tidigare försökte byggsystemet att dynamiskt hitta redan
    byggd re2c som kunde användas för att bygga om sig själv.
    Detta ledde till felaktiga beroenden (eftersom beroendediagrammet visade sig
    dynamisk, vilket de flesta byggsystem inte gillar).
    Nu, för att bygga om lexers, krävs det uttryckligen
    konfigurera byggsystemet och ställ in variabeln RE2C_FOR_BUILD.

Tack till alla som bidragit till denna release!

Källa: linux.org.ru

Lägg en kommentar