ANTLR

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з 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 (посилання)
  2. Офіційний сайт ANTLR. Архів оригіналу за 10 серпня 2007.
  3. Історія релізів ANTLR 4.
  4. Архівована копія. Архів оригіналу за 17 січня 2008. Процитовано 16 січня 2008.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)

Посилання

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