re2c 2.0

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

Ajouter un commentaire