Le lundi 20 juillet, re2c, un générateur d'analyseur lexical rapide, a été lancé.
Les principaux changements:
-
Ajout de la prise en charge de la langue Go
(activé soit par l'option --lang go pour re2c, soit en tant que programme re2go distinct).
La documentation pour C et Go est générée à partir du même texte, mais avec des
exemples de codes. Le sous-système de génération de code dans re2c a été entièrement repensé, ce qui
devrait faciliter la prise en charge de nouvelles langues à l'avenir. -
Ajout d'un système de build alternatif pour CMake (merci ligfx!).
Des tentatives pour traduire re2c en CMake ont été faites depuis longtemps, mais avant ligfx personne
proposé une solution complète.
L'ancien système de build Autotools continue d'être pris en charge et utilisé,
et dans un avenir prévisible, il n'est pas prévu de l'abandonner (en partie pour ne pas créer
problèmes pour les développeurs de distribution, en partie à cause de l'ancien système de construction
plus stable et plus concis que le nouveau).
Les deux systèmes sont testés en permanence à l'aide de Travis CI. -
Ajout de la possibilité de définir le code d'interface dans les configurations lors de l'utilisation
API générique. Auparavant, la plupart des API devaient être spécifiées sous la forme
fonctions ou macros de fonctions. Ils peuvent désormais être spécifiés sous forme arbitraire
lignes avec des paramètres de modèle nommés comme @@{name} ou simplement @@ (si
il n'y a qu'un seul paramètre et il n'y a pas d'ambiguïté). Le style de l'API est spécifié par la configuration
re2c:api:style (la valeur des fonctions spécifie un style fonctionnel et la forme libre spécifie un style arbitraire). -
Le fonctionnement de l'option -c, --start-conditions a été amélioré, permettant de combiner plusieurs
lexers interconnectés dans un bloc re2c. Maintenant vous pouvez utiliser
blocs réguliers ainsi que des blocs conditionnels et spécifier plusieurs blocs conditionnels sans rapport
blocs dans un seul fichier.
Fonctionnement amélioré de l'option -r, --reuse (réutilisation du code d'un bloc
dans d'autres blocs) en combinaison avec les options -c, --start-conditions et -f, --storable-state
(un lexer avec état qui peut être interrompu à tout moment
et poursuivre l'exécution plus tard). -
Correction d'un bug dans l'algorithme de fin de saisie récemment ajouté
(règle EOF), ce qui a conduit dans de rares cas à un traitement incorrect
règles qui se chevauchent. -
Le processus d'amorçage a été simplifié. Auparavant, le système de build essayait de trouver dynamiquement déjà
une version re2c qui pourrait être utilisée pour se reconstruire.
Cela entraînait des dépendances incorrectes (puisque le graphique des dépendances était
dynamique, ce que la plupart des systèmes de build n'aiment pas).
Maintenant, pour reconstruire les lexers, vous devez explicitement
configurez le système de build et définissez la variable RE2C_FOR_BUILD.
Merci à tous ceux qui ont participé à la préparation de cette sortie !
Source: linux.org.ru