Yantra est un générateur d'analyseur C++ qui construit entièrement l'AST en premier, puis le parcourt de haut en bas dans un passage séparé, en appelant les actions sémantiques. Contrairement à la plupart des générateurs d'analyseur LALR (Yacc, Bison, Lemon) qui exécutent les actions sémantiques pendant l'analyse, Yantra permet à l'action d'une règle parente de s'exécuter avant que ses enfants ne soient visités. Cela permet à une seule grammaire de définir plusieurs parcours, tels qu'un émettant du C++ et un autre du Java. Les classes AST et de parcours sont générées automatiquement. Yantra intègre un analyseur lexical avec prise en charge des modes pour les commentaires imbriqués, une sortie en fichier unique amalgamée optionnelle avec un main() généré, et nécessite uniquement un compilateur C++23. Il est sous licence MIT et est actuellement à la version 0.5.1, pré-1.0, maintenu par un seul développeur.
Un petit exemple de grammaire démontre le comportement de parcours de haut en bas : l'analyse de "1 + 2 + 3" affiche "Adding" en premier (la racine), suivie des sorties de nombres. Cet ordre n'est possible que parce que l'arbre complet existe avant l'exécution de toute action.
Les limites connues sont documentées sur la page GitHub du projet. Le dépôt est disponible à l'adresse https://github.com/TantrixAuto/yantra, avec les retours et questions accueillis par le mainteneur.
L'outil utilise CMake pour la construction et produit l'exécutable ycc pour générer des analyseurs à partir de fichiers de grammaire.
Entités clés : Entreprises : TantrixAuto
Source: Hacker News · Résumé par HeadlinesBriefing