ANTLR (буквально англ. Another Tool For Language Recognition) — генератор синтаксичних аналізаторів, дозволяє автоматично створювати програму-парсер (як і лексичний аналізатор) однією з декількох цільових мов програмування (Java, C++, C#, Python, Ruby) за описом LL(*)-граматики мовою, близькою до EBNF. Дозволяє конструювати компілятори, інтерпретатори, транслятори з різних формальних мов. Також, надає зручні засоби для відновлення після помилок, і повідомлення про них. ANTLR — продовження PCCTS (Purdue Compiler Construction Tool Set), який було розроблено 1989 року.

ANTLR
Тип генератор синтаксичних аналізаторів
Автор Terence Parr та інші
Розробник Terence Parrd
Перший випуск лютий 1992
Стабільний випуск 4.8 (16 січня, 2020; 4 роки тому (2020-01-16))
Платформа Cross-platform
Мова програмування Java, C#
Стан розробки активний
Ліцензія BSD
Репозиторій github.com/antlr/antlr4
Вебсайт antlr.org

Основоположником проекту є професор Теренс Парр з Університету Сан-Франциско. ANTLR — проект з відкритим кодом, версія 3.0 поширюється за ліцензією BSD.

Історія ред.

Історія ANTLR[1]

  • осінь 1989 — PCCTS
  • лютий 1990 — ANTLR 1.00B, LL(1)
  • лютий 1992 — ANTLR 1.00, LL(k)
  • травень 1997 — ANTLR 2.0.0
  • Травень 2007 — ANTLR 3.0[2]
  • січень 2013 — ANTLR 4.0[3]

ANTLR 4 ред.

Приклад ред.

В даному прикладі показано граматику на ANTLR 4.8 для лексичного та синтаксичного аналізу арифметичних виразів з невід'ємними числами.

 
Абстрактне синтаксичне дерево побудоване з використанням ANTLR 4.8 для виразу «2 + 2 - (14 * 5,5)»
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 [4]:

Див. також ред.

Джерела ред.

  1. Архівована копія. Архів оригіналу за 12 грудня 2007. Процитовано 16 січня 2008.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  2. Офіційний сайт ANTLR. Архів оригіналу за 10 серпня 2007.
  3. Історія релізів ANTLR 4.
  4. Архівована копія. Архів оригіналу за 17 січня 2008. Процитовано 16 січня 2008.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)

Посилання ред.