Op dinsdag 19 november werd de release gepresenteerd re2c – van de lexicale analyzer generator (ook bekend als de compiler die reguliere expressies omzet in code in de doeltaal). re2c is gespecialiseerd in het genereren van snelle en eenvoudig in te voegen lexers. Het verschilt van de meer bekende analoog flex door een flexibele interface, de generatie van geoptimaliseerde niet-tabelvormige lexers en ondersteuning voor submatch-extractie op basis van deterministische eindige automaten met tags (TDFA). re2c wordt gebruikt in projecten waar de snelheid van de lexer belangrijk is, bijvoorbeeld in Ninja en PHP.
In release 4.0 is de codegeneratiesubsystem grondig herzien, wat de ondersteuning voor acht nieuwe talen (D, Haskell, Java, JavaScript, OCaml, Python, V, Zig) mogelijk maakte, naast de al ondersteunde taal (C/C++, Go, Rust), evenals een algemeen mechanisme voor het toevoegen van nieuwe talen via configuratiebestanden. De codegenerator is verantwoordelijk voor de transpositie van de reeds opgebouwde en geoptimaliseerde eindige automaat naar code, dat wil zeggen dat het zijn taak is om de geschikte controlestromen, datatypes, de algemene programmastructuur, enz. te kiezen die passen bij de doeltaal. Voorheen was deze hele logica onderdeel van de broncode van re2c, en om het te wijzigen of een nieuwe taal toe te voegen, moest de broncode worden gepatched en moest re2c opnieuw worden opgebouwd. Dergelijke patches werden niet in de hoofdrepository opgenomen zonder een standaardset voorbeelden en tests, wat het hele proces verder bemoeilijkte. Nu is deze logica overgebracht naar syntaxbestanden – tekstuele configuratiebestanden die door de gebruiker kunnen worden verstrekt (standaard gebruikt re2c de standaardbestanden). De broncode van re2c is volledig vrij van details van specifieke talen en vertrouwt enkel op het syntaxbestand. De gebruiker kan een bestaand syntaxbestand gedeeltelijk overschrijven of een nieuwe volledig vanaf nul schrijven. Voor alle officieel ondersteunde talen is er complete documentatie met voorbeelden.
Trouwens, het idee van syntaxbestanden is ontstaan door een opmerking op LOR, waarvoor dank
the_coder.
In de release zijn veel andere wijzigingen opgenomen ter vereenvoudiging van de gebruikersinterface, verbetering van het werken met capturing groups, en er is een online omgeving toegevoegd voor het bewerken en compileren van voorbeelden: http://re2c.org/playground.
Bron: linux.org.ru
