re2c 2.0

Op maandag 20 juli is de release van re2c, een snelle generator voor lexicale analyse, uitgebracht.
Grote veranderingen:

  • Ondersteuning toegevoegd voor Go-taal
    (ingeschakeld met de optie --lang go voor re2c, of als een op zichzelf staand re2go-programma).
    De documentatie voor C en Go wordt gegenereerd op basis van dezelfde tekst, maar met verschillende
    codevoorbeelden. Het subsysteem voor het genereren van codes in re2c is volledig opnieuw ontworpen, wat
    moet het in de toekomst gemakkelijker maken om nieuwe talen te ondersteunen.

  • Alternatief bouwsysteem toegevoegd aan CMake (bedankt ligfx!).
    Pogingen om re2c naar CMake te vertalen zijn al lang gedaan, maar vΓ³Γ³r ligfx niemand
    een totaaloplossing aangeboden.
    Het oude bouwsysteem op Autotools wordt nog steeds ondersteund en gebruikt,
    en in de nabije toekomst zijn er geen plannen om het op te geven (deels om niet te creΓ«ren
    problemen voor distributie-ontwikkelaars, deels vanwege het oude build-systeem
    stabieler en beknopter dan de nieuwe).
    Beide systemen worden even continu getest met Travis CI.

  • De mogelijkheid toegevoegd om de interfacecode in configuraties in te stellen bij gebruik
    generieke API (generieke API). Voorheen moesten de meeste API's in het formulier worden gespecificeerd
    functies of functiemacro's. Nu kunnen ze worden ingesteld in de vorm van willekeurig
    tekenreeksen met benoemde sjabloonparameters van de vorm @@{name} of gewoon @@ (if
    er is slechts één parameter en er is geen dubbelzinnigheid). API-stijl is configureerbaar
    re2c:api:style (de functiewaarde specificeert de functionele stijl, terwijl de waarde in vrije vorm willekeurig is).

  • Verbeterde werking van de optie -c, --start-conditions, waarmee u er meerdere kunt combineren
    onderling verbonden lexers in één re2c-blok. Nu kunt u gebruiken
    gewone blokken op één lijn met voorwaardelijke blokken en stel verschillende niet-gerelateerde voorwaardelijke blokken in
    blokken in één bestand.
    Verbeterde opties -r, --reuse (hergebruik van code uit één blok
    in andere blokken) in combinatie met de opties -c, --start-conditions en -f, --storable-state
    (een stateful lexer die op een willekeurige locatie kan worden onderbroken
    en ga later verder met de uitvoering).

  • Een bug opgelost in het nieuw toegevoegde algoritme voor het afhandelen van het einde van invoergegevens
    (EOF-regel), wat in zeldzame gevallen leidde tot onjuiste verwerking
    overlappende regels.

  • Vereenvoudigd bootstrap-proces. Voorheen probeerde het buildsysteem al dynamisch te vinden
    gebouwde re2c die kan worden gebruikt om zichzelf te herbouwen.
    Dit leidde tot onjuiste afhankelijkheden (sinds de afhankelijkheidsgrafiek bleek
    dynamisch, waar de meeste build-systemen niet van houden).
    Nu, om lexers opnieuw op te bouwen, is dit expliciet vereist
    configureer het buildsysteem en stel de variabele RE2C_FOR_BUILD in.

Dank aan iedereen die heeft bijgedragen aan deze uitgave!

Bron: linux.org.ru

Voeg een reactie