re2c 2.0

Lundi 20 juillet, la version de re2c - le générateur d’analyseurs lexicaux rapides - a été publiée.
Principales modifications :

  • Ajout de la prise en charge du langage Go
    (activée soit avec l’option —lang go pour re2c, soit via le programme distinct re2go).
    La documentation pour C et Go est générée à partir du même texte, mais avec des
    exemples de code différents. Le sous-système de génération de code a été complètement retravaillé dans re2c, ce qui
    devrait faciliter la prise en charge de nouveaux langages à l'avenir.

  • Ajout d'un système de construction alternatif basé sur CMake (merci ligfx!).


    Des tentatives pour porter re2c sur CMake ont été faites depuis longtemps, mais personne avant ligfx n'a
    proposé de solution complète.
    L'ancien système de construction sur Autotools continue d'être pris en charge et utilisé,
    et il n'y a pas de plans à court terme pour y renoncer (en partie pour ne pas créer
    de problèmes pour les développeurs de distributions, en partie parce que l'ancien système de construction
    est plus stable et concis que le nouveau).
    Les deux systèmes sont continuellement testés grâce à Travis CI.
  • Ajout de la possibilité de spécifier le code d'interface dans les configurations lors de l'utilisation
    d’une API générique. Auparavant, la plupart des API devaient être spécifiées sous forme de
    fonctions ou de macros fonctionnelles. Maintenant, elles peuvent être spécifiées sous forme de chaînes arbitraires
    avec des paramètres de modèle nommés du type @@{name} ou simplement @@ (si
    le paramètre est unique et qu'il n'y a pas d'ambiguïté). Le style de l’API est défini par la configuration
    re2c:api:style (la valeur functions définit le style fonctionnel, et free-form - le style libre).

  • Amélioration du fonctionnement de l'option -c, —start-conditions, permettant de combiner plusieurs
    analyseurs lexicaux interconnectés dans un même bloc re2c. Il est maintenant possible d'utiliser
    des blocs normaux aux côtés de blocs conditionnels et de spécifier plusieurs blocs conditionnels non liés
    dans un même fichier.
    Amélioration de l'option -r, —reuse (réutilisation de code d'un bloc
    dans d'autres blocs) en combinaison avec les options -c, —start-conditions et -f, —storable-state
    (analyseur avec un état sauvegardé, qui peut être interrompu à tout moment
    et repris plus tard).

  • Correction d'un bug dans l'algorithme récemment ajouté pour traiter la fin des données d'entrée
    (règle EOF), qui entraînait dans de rares cas un traitement incorrect
    des règles chevauchantes.

  • Simplification du processus de démarrage. Auparavant, le système de construction tentait de trouver dynamiquement re2c déjà
    construit, qu’on pourrait utiliser pour se recompiler lui-même.
    Cela entraînait des dépendances incorrectes (car le graphe des dépendances devenait
    dynamique, ce que la plupart des systèmes de construction n'apprécient pas).
    Maintenant, pour reconstruire les analyseurs, il est nécessaire de
    configurer explicitement le système de construction et de définir la variable RE2C_FOR_BUILD.

Merci à tous ceux qui ont participé à la préparation de cette version !

Source : linux.org.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster