MÄndagen den 20 juli slÀpptes re2c - en generator för snabba lexikalanalysatorer.
Huvudsakliga förÀndringar:
Stöd för programmeringssprÄket Go har lagts till.
(aktiveras antingen med alternativet âlang go för re2c, eller som ett separat program re2go).
Dokumentationen för C och Go genereras frÄn samma text, men med olika
exempel pÄ kod. Den underliggande kodgenereringssystemet i re2c har helt
omstrukturerats, vilket bör underlÀtta stödet för nya sprÄk i framtiden.-
Försök att översÀtta re2c till CMake har gjorts lÀnge, men ingen före ligfx har
föreslagit en fullstÀndig lösning.
Det gamla byggsystemet pÄ Autotools fortsÀtter att stödas och anvÀndas,
och det finns inga planer pÄ att överge det i den nÀrmaste framtiden (delvis för att inte skapa
problem för distributörsutvecklare, delvis för att det gamla byggsystemet
Àr stabilare och mer koncist Àn det nya).
BÄda systemen testas kontinuerligt med hjÀlp av Travis CI. Möjligheten att ange grÀnssnittskod i konfigurationer har lagts till vid anvÀndning av
det generiska API:et. Tidigare var det mesta API:n tvunget att anges i form av
funktioner eller funktionella makron. Nu kan de anges som godtyckliga
strÀngar med namngivna mallparametrar av typen @@{name} eller helt enkelt @@ (om
parametern Àr en och ingen tvetydighet uppstÄr). API-stilen anges av konfigurationen
re2c:api:style (vĂ€rdet functions ger funktionell stil, medan free-form Ă€r godtycklig).Funktionen för alternativet -c, âstart-conditions har förbĂ€ttrats, vilket möjliggör sammanslagning av flera
relaterade lexers i ett enda re2c-block. Nu kan vanliga block anvÀndas tillsammans med villkorliga och
flera orelaterade villkorliga block anges i en och samma fil.
Funktionen för alternativet -r, âreuse (Ă„teranvĂ€ndning av kod frĂ„n ett block
i andra block) har förbĂ€ttrats i kombination med alternativen -c, âstart-conditions och -f, âstorable-state
(lexer med bevarat tillstÄnd, som kan avbrytas pÄ valfri plats
och fortsÀtta körningen senare).
Ett fel i den nyligen tillagda algoritmen för att hantera slutet av indata(EOF-regel) har ÄtgÀrdats, vilket i sÀllsynta fall ledde till felaktig behandling
av överlappande regler.
Processen för bootstrapping har förenklats. Tidigare försökte byggsystemet dynamiskt hitta en redanbygge re2c som kunde anvÀndas för att Äterbygga sig sjÀlv.
en sammanstÀlld re2c som kan anvÀndas för att ombygga sig sjÀlv.
Det ledde till felaktiga beroenden (eftersom beroendegrafen blev
dynamisk, vilket de flesta byggsystem ogillar).
Nu krÀvs det att man explicit
konfigurerar byggsystemet och sÀtter variabeln RE2C_FOR_BUILD.
Tack till alla som deltog i förberedelsen av denna version!
KĂ€lla: linux.org.ru
