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.-
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
