ANTLR (буквально ) — генератор синтаксичних аналізаторів, дозволяє автоматично створювати програму-парсер (як і лексичний аналізатор) однією з декількох цільових мов програмування (Java, C++, C#, Python, Ruby) за описом LL(*)-граматики мовою, близькою до EBNF. Дозволяє конструювати компілятори, інтерпретатори, транслятори з різних формальних мов. Також, надає зручні засоби для відновлення після помилок, і повідомлення про них. ANTLR — продовження PCCTS (Purdue Compiler Construction Tool Set), який було розроблено 1989 року.
Основоположником проекту є професор Теренс Парр з Університету Сан-Франциско. ANTLR — проект з відкритим кодом, версія 3.0 поширюється за ліцензією BSD.
Історія Історія ANTLR осінь 1989 — PCCTS лютий 1990 — ANTLR 1.00B, LL(1) лютий 1992 — ANTLR 1.00, LL(k) травень 1997 — ANTLR 2.0.0 Травень 2007 — ANTLR 3.0 січень 2013 — ANTLR 4.0
ANTLR 4
Приклад
В даному прикладі показано граматику на ANTLR 4.8 для лексичного та синтаксичного аналізу арифметичних виразів з невід'ємними числами.
grammar ArithmExpressionLanguage;
// визначення правил граматики stat : stat (MUL|DIV) stat | stat (PLUS|MINUS) stat | INTEGER | REAL | OP_BR stat CL_BR;
// визначення токенів OP_BR: '('; CL_BR: ')'; PLUS: '+'; MINUS: '-'; MUL: '*'; DIV: '/'; INTEGER: ('0' .. '9')+; // невід'ємні цілі числа REAL: ('0' .. '9')+ ',' ('0' .. '9')+; // невід'ємні дійсні числа
// невраховування пробілу та горизонтальної табуляції у виразі під час лексичного аналізу WHITESPACE: [ \t] -> skip;
Використання Деякі проєкти, що використовують ANTLR : IntelliJ IDEA Xcode Oracle WebLogic Server Hibernate Query language Drools/JBoss Rules iWeb (частина iLife) мова Groovy
Див. також LL(k)-граматика Граматичний аналіз Синтаксичний аналіз
Джерела
Посилання Офіційний сайт проекту Середовище розробки для ANTLR