Op maandag 20 juli is de release van re2c - de generator voor snelle lexicale analyzers vrijgegeven.
Belangrijkste wijzigingen:
Ondersteuning voor de programmeertaal Go is toegevoegd.
(dit kan worden ingeschakeld of met de optie ālang go voor re2c, of als een apart programma re2go).
Documentatie voor C en Go wordt gegenereerd uit dezelfde tekst, maar met verschillende
codevoorbeelden. Het subsystem voor codegeneratie in re2c is volledig herzien, wat
de ondersteuning van nieuwe talen in de toekomst zou moeten vergemakkelijken.-
Pogingen om re2c naar CMake te porteren zijn al lange tijd bezig, maar tot ligfx heeft niemand een
volledige oplossing voorgesteld.
Het oude bouwsysteem op Autotools blijft worden ondersteund en gebruikt,
en er zijn op korte termijn geen plannen om daarvan af te stappen (deels om geen
problemen te creƫren voor distributeurs, deels omdat het oude bouwsysteem
stabieler en beknopter is dan de nieuwe).
Beide systemen worden gelijktijdig continu getest met Travis CI. De mogelijkheid om interfacecode in configuraties op te geven bij gebruik van
een generiek API is toegevoegd. Vroeger moesten de meeste API's worden opgegeven in de vorm
van functies of functionele macro's. Nu kunnen ze worden gedefinieerd in de vorm van willekeurige
strings met benoembare sjabloonparameters zoals @@{name} of gewoon @@ (als er
slechts één parameter is en er geen ambiguïteit ontstaat). De stijl van de API wordt opgegeven met de configuratie
re2c:api:style (de waarde functions geeft functionele stijl aan, terwijl free-form willekeurig betekent).De functie van de optie -c, āstart-conditions is verbeterd, waarmee meerdere
onderling verbonden lexers in ƩƩn re2c-blok kunnen worden gecombineerd. Nu kunnen gewone blokken
naast voorwaardelijke blokken worden gebruikt en kunnen meerdere niet-verbonden voorwaardelijke
blokken in ƩƩn bestand worden gedefinieerd.
De werking van de optie -r, āreuse (hergebruik van code uit ƩƩn blok
in andere blokken) in combinatie met de opties -c, āstart-conditions en -f, āstorable-state
(een lexer met duurzaam estado, die op elk moment kan worden onderbroken
en later kan worden hervat) is verbeterd.Een bug in het recent toegevoegde algoritme voor het verwerken van het einde van de invoergegevens
(EOF-regel), die in zeldzame gevallen leidde tot onjuiste verwerking van
overlappende regels, is opgelost.Het opstartproces is vereenvoudigd. Eerder probeerde het bouwsysteem dynamisch een reeds
gebouwd re2c te vinden dat kon worden gebruikt voor het opnieuw bouwen van zichzelf.
Dit leidde tot onjuiste afhankelijkheden (aangezien de afhankelijkheidsgrafiek dynamisch was, wat de meeste buildsystemen niet prettig vinden).
dynamisch, wat de meeste bouwsystemen niet leuk vinden).
Nu is het nodig om de lexers expliciet te configureren in het buildsysteem en de variabele RE2C_FOR_BUILD in te stellen.
Bedankt aan iedereen die heeft bijgedragen aan de voorbereiding van deze release!
š„re2c 2.0 | ProHoster
Bron: linux.org.ru
