ANTLR

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 (2020-01-16))
Версії 4.9.2 (11 березня 2021)[1]
Репозиторій github.com/antlr/antlr4
Платформа Cross-platform
Мова програмування Java, C#
Стан розробки активний
Ліцензія BSD
Вебсайт antlr.org

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

Історія

Історія ANTLR[2]

  • осінь 1989 — PCCTS
  • лютий 1990 — ANTLR 1.00B, LL(1)
  • лютий 1992 — ANTLR 1.00, LL(k)
  • травень 1997 — ANTLR 2.0.0
  • Травень 2007 — ANTLR 3.0[3]
  • січень 2013 — ANTLR 4.0[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 [5]:

Див. також

Джерела

  1. Release 4.9.2 — 2021.
  2. Архівована копія. Архів оригіналу за 12 грудня 2007. Процитовано 16 січня 2008.
  3. Офіційний сайт ANTLR. Архів оригіналу за 10 серпня 2007.
  4. Історія релізів ANTLR 4.
  5. Архівована копія. Архів оригіналу за 17 січня 2008. Процитовано 16 січня 2008.

Посилання


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.