Перейти до вмісту

ANTLR

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

Основоположником проекту є професор Теренс Парр з Університету Сан-Франциско. 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.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 (посилання) [Архівовано 2007-12-12 у Wayback Machine.]
  2. Офіційний сайт ANTLR. Архів оригіналу за 10 серпня 2007.
  3. Історія релізів ANTLR 4.
  4. Архівована копія. Архів оригіналу за 17 січня 2008. Процитовано 16 січня 2008.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) [Архівовано 2008-01-17 у Wayback Machine.]

Посилання

[ред. | ред. код]