J'ai une idée pour un projet de passe-temps qui effectue une analyse et une manipulation de code. Ce projet nécessitera à la fois les arbres de syntaxe concrète et abstraite d'un fichier source donné. De plus, des références bidirectionnelles entre les deux arbres seraient utiles. Je voudrais éviter le travail de transcription d'une grammaire pour construire mon propre lexer et analyseur.Format standard pour arbres syntaxiques concrets et abstraits
Existe-t-il un format standard pour décrire les arbres de syntaxe concrets ou abstraits? Est-ce que les chaînes d'outils largement utilisées prennent en charge la sortie de ces formats?
Je n'ai pas de langage de programmation cible en tête. Tout ce qui est populaire va faire pour un prototype, mais je préférerais celui que je connais bien: Python, C#, Javascript, ou C/C++. J'aimerais pouvoir exécuter un fichier source à l'aide d'un outil ou d'une bibliothèque et récupérer les deux arborescences. Dans un monde idéal, il serait pratique d'exécuter cet outil sur du code car il est édité par un utilisateur et tolère les erreurs. Encore une fois, j'essaie simplement de développer un prototype, donc ces exigences sont assez laxistes.
Merci!
La réponse ANTLR de @vs est convaincante, mais un format standard qui ignore la complexité de génération de code peut être préférable. Je vais attendre un jour ou deux avant de marquer la réponse. –