ANTLR
ANTLR (буквально англ. Another Tool For Language Recognition) — генератор синтаксичних аналізаторів, дозволяє автоматично створювати програму-парсер (як і лексичний аналізатор) однією з декількох цільових мов програмування (Java, C++, C#, Python, Ruby) за описом LL(*)-граматики мовою, близькою до EBNF. Дозволяє конструювати компілятори, інтерпретатори, транслятори з різних формальних мов. Також, надає зручні засоби для відновлення після помилок, і повідомлення про них. ANTLR — продовження PCCTS (Purdue Compiler Construction Tool Set), який було розроблено 1989 року.
Тип | генератор синтаксичних аналізаторів |
---|---|
Автор(и) | Terence Parr та інші |
Розробник | Terence Parrd |
Перший випуск | лютий 1992 |
Стабільний випуск | 4.8 (16 січня, 2020 ) |
Версії | 4.9.2 (11 березня 2021)[1] |
Репозиторій | github.com/antlr/antlr4 |
Платформа | Cross-platform |
Мова програмування | Java, C# |
Стан розробки | активний |
Ліцензія | BSD |
Вебсайт | antlr.org |
Основоположником проекту є професор Теренс Парр з Університету Сан-Франциско. ANTLR — проект з відкритим кодом, версія 3.0 поширюється за ліцензією BSD.
Історія
Історія ANTLR[2]
Приклад
В даному прикладі показано граматику на 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 [5]:
- IntelliJ IDEA
- Xcode
- Oracle WebLogic Server
- Hibernate Query language
- Drools/JBoss Rules
- iWeb (частина iLife)
- мова Groovy
Див. також
- LL(k)-граматика
- Граматичний аналіз
- Синтаксичний аналіз
Джерела
- Release 4.9.2 — 2021.
- Архівована копія. Архів оригіналу за 12 грудня 2007. Процитовано 16 січня 2008.
- Офіційний сайт ANTLR. Архів оригіналу за 10 серпня 2007.
- Історія релізів ANTLR 4.
- Архівована копія. Архів оригіналу за 17 січня 2008. Процитовано 16 січня 2008.