Sortie du générateur de lexer re2c 1.2

A eu lieu libération re2c, un générateur d'analyseur lexical gratuit pour les langages C et C++. Rappelons que re2c a été écrit en 1993 par Peter Bambulis comme un générateur expérimental d'analyseurs lexicaux très rapides, se distinguant des autres générateurs par la vitesse du code généré et une interface utilisateur inhabituellement flexible qui permet aux analyseurs d'être intégrés facilement et efficacement dans un code existant. base. Depuis, le projet a été développé par la communauté et continue d'être une plateforme d'expérimentation et de recherche dans le domaine des grammaires formelles et des machines à états finis.

La préparation de la sortie a duré presque un an. La plupart du temps, comme toujours, a été consacré à l'élaboration d'un cadre théorique et à la rédaction d'un
des articles "Extraction efficace de sous-correspondances POSIX sur NFA«.
Les algorithmes décrits dans l'article sont implémentés dans la bibliothèque expérimentale libre2c
(la construction de la bibliothèque et les tests de performances sont désactivés par défaut et sont activés par l'option de configuration « -enable-libs »). La bibliothèque n'est pas conçue comme un concurrent des projets existants tels que RE2, mais comme une plateforme de recherche pour le développement de nouveaux.
algorithmes (qui peuvent ensuite être utilisés dans re2c ou dans d'autres projets). C'est également pratique du point de vue des tests, de la mesure des performances et de la création de liaisons avec d'autres langages.

Principales innovations de la version re2c 1.2 :

  • Ajout d'une nouvelle méthode simplifiée pour vérifier la fin des données d'entrée (« règle EOF »). Pour cela, la configuration « re2c:eof » a été ajoutée,
    permet de sélectionner le caractère du terminal,
    et une règle spéciale « $ », qui est déclenchée si le lexer
    atteint avec succès la fin des données d'entrée.
    Historiquement, re2c propose un choix de plusieurs méthodes de vérification pour
    fin des intrants variant en limitation, efficacité et simplicité
    applications. La nouvelle méthode est conçue pour simplifier l'écriture du code, tout en
    tout en restant efficace et largement applicable. Vieilles manières
    fonctionnent toujours et peuvent être préférés dans certains cas.

  • Ajout de la possibilité d'inclure des fichiers externes à l'aide d'une directive
    "/*!include:re2c "file.re" */", où "file.re" est le nom du fichier à inclure. Re2c recherche les fichiers dans le répertoire de fichiers inclus,
    ainsi que dans la liste des chemins spécifiés à l'aide de l'option « -I ».
    Les fichiers inclus peuvent inclure d'autres fichiers.
    Re2c fournit des fichiers "standard" dans le répertoire "include/"
    projet - on s'attend à ce que des définitions utiles s'y accumulent
    expressions régulières, quelque chose comme la bibliothèque standard.
    Jusqu'à présent, à la demande des travailleurs, un fichier contenant les définitions des catégories Unicode a été ajouté.

  • Ajout de la possibilité de générer des fichiers d'en-tête avec des paramètres arbitraires
    contenu en utilisant les options "-t --type-header" (ou approprié
    configurations) et les nouvelles directives "/*!header:re2c:on*/" et
    "/*!en-tête:re2c:off*/". Cela peut être utile dans les cas où
    lorsque re2c a besoin de générer des définitions de variables, de structures et de macros,
    utilisé dans d’autres unités de traduction.

  • Re2c comprend désormais les littéraux UTF8 et les classes de caractères dans les expressions régulières.
    Par défaut, re2c analyse les expressions comme "∀x ∃y" comme
    séquence de caractères ASCII de 1 bit « e2 88 80 78 20 e2 88 83 79 »
    (codes hexadécimaux), et les utilisateurs doivent échapper manuellement les caractères Unicode :
    "\\u2200x \\u2203y." C'est très gênant et inattendu pour beaucoup
    utilisateurs (comme en témoignent les rapports de bogues constants). Alors maintenant
    re2c fournit l'option "--input-encoding {ascii | utf8}",
    ce qui vous permet de changer le comportement et d'analyser « ∀x ∃y » comme
    "2200 78 20 2203 79."

  • Re2c permet désormais d'utiliser des blocs re2c réguliers en mode "-r --reuse".
    Ceci est pratique si le fichier d'entrée contient de nombreux blocs et seulement certains d'entre eux.
    doit être réutilisé.

  • Vous pouvez désormais définir le format des avertissements et des messages d'erreur
    en utilisant la nouvelle option "--location-format {gnu | msvc}". Le format GNU s'affiche
    comme « nom de fichier : ligne : colonne : » et le format MSVC comme « nom de fichier (ligne, colonne) ».
    Cette fonctionnalité peut être utile pour les amateurs d'IDE.
    Une option "--verbose" a également été ajoutée, qui affiche un court message de victoire en cas de réussite.

  • Le mode « compatibilité » avec flex a été amélioré - certaines erreurs d'analyse ont été corrigées et
    priorité des opérateurs incorrecte dans de rares cas.
    Historiquement, l'option "-F --flex-suppor" permettait d'écrire du code
    mélangé dans le style flex et le style re2c, ce qui rend l'analyse un peu difficile.
    Le mode de compatibilité Flex est rarement utilisé dans le nouveau code,
    mais re2c continue de le prendre en charge pour une compatibilité ascendante.

  • L'opérateur de soustraction de classe de caractères "/" s'applique désormais
    avant d'élargir le codage, ce qui permet de l'utiliser dans un plus grand nombre de cas,
    si un codage à longueur de caractère variable est utilisé (par exemple UTF8).

  • Le fichier de sortie est maintenant créé atomiquement : re2c crée d'abord un fichier temporaire
    et y écrit le résultat, puis renomme le fichier temporaire en sortie
    une opération.

  • La documentation a été complétée et réécrite ; en particulier, de nouveaux ont été ajoutés
    chapitres sur http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и sur les façons de vérifier la fin des données d'entrée.
    La nouvelle documentation est collectée sous la forme
    un guide complet d'une page
    avec des exemples (les mêmes sources sont rendues dans la page de manuel et dans la documentation en ligne).
    De mauvaises tentatives ont été faites pour améliorer la lisibilité du site sur les téléphones.

  • Du point de vue des développeurs, re2c a acquis un sous-système plus complet
    débogage Le code de débogage est désormais désactivé dans les versions finales et
    peut être activé à l'aide de l'option de configuration "--enable-debug".

Source: opennet.ru

Ajouter un commentaire