ANTLR
ANTLR, sigle de ANother Tool for Language Recognition, est un framework libre de construction de compilateurs utilisant une analyse LL(*), créé par Terence Parr à l'Université de San Francisco.
Développé par | Terence Parr (en) |
---|---|
Dernière version | 4.8 () |
Dépôt | github.com/antlr/antlr4 |
Assurance qualité | Intégration continue |
Écrit en | Java |
Environnement | Multiplate-forme |
Type | Compilateur de compilateur |
Licence | Licence BSD |
Site web | www.antlr.org |
Description
ANTLR prend en entrée une grammaire définissant un langage et produit le code reconnaissant ce langage. La dernière[Quand ?] version d'ANTLR permet de générer du code pour les langages Java, C#, Python2, Python3, JavaScript, C++, Go, Swift et PHP.
Dans sa dernière version, ANTLR peut supporter des grammaires utilisant de la récursivité gauche directe, mais pas indirecte.
ANTLR permet de générer des analyseurs lexicaux, syntaxiques ou des analyseurs lexicaux et syntaxiques combinés. Un analyseur syntaxique peut créer automatiquement un arbre syntaxique abstrait qui peut alors à son tour être traité par un analyseur d’arbre. ANTLR utilise une notation identique pour définir les différents types d’analyseurs, qu’ils soient lexicaux, syntaxiques, ou d’arbre. Des actions peuvent être assignées aux branches de l'arbre syntaxique abstrait ainsi obtenu. Ces actions peuvent être directement insérées dans la spécification de la grammaire utilisée, ou utilisés de façon découplée à travers un système de traversée d'arbres fourni par ANTLR.
Les grammaires ANTLR sont des sous-classes de Lexer, Parser, TreeParser
Exemples d'utilisation de ANTLR
- XIC - Plateforme d'Intermediation de Xcalia basée sur JDO, SDO et EJB.
- PromptSQL - Logiciel offrant la complétion automatique pour le SQL à plusieurs éditeurs SQL de Microsoft.
- Groovy - Langage de programmation fonctionnant sur la plateforme Java.
- Jython - Langage de programmation inspiré de Python, fonctionnant sur la plateforme Java.
- Portail des logiciels libres
- Portail de la programmation informatique