ANTLR

Из Википедии, бесплатной энциклопедии

ANTLR
Тип Компилятор компиляторов
Авторы Терренс Парр и другие
Разработчик Terence Parr[вд]
Написана на Java
Первый выпуск февраль 1992
Аппаратная платформа Кроссплатформенное программное обеспечение
Последняя версия 4.13.1 (4 сентября 2023)
Репозиторий github.com/antlr/antlr4
Состояние в разработке
Лицензия BSD
Сайт antlr.org

ANTLR (от англ. ANother Tool for Language Recognition — «ещё одно средство распознавания языков») — генератор нисходящих анализаторов для формальных языков. ANTLR преобразует контекстно-свободную грамматику в виде РБНФ в программу на C++, Java, C#, JavaScript, Go, Swift, Python[1]. Используется для разработки компиляторов, интерпретаторов и трансляторов.

Преимущества[править | править код]

Применение[править | править код]

ANTLR широко используется в крупных известных продуктах:

Краткая справка элементов языка[править | править код]

(...) подправило (...)* повторение подправила 0 или более раз (...)+ Повторение подправила 1 или более раз (...)? подправило, может отсутствовать {...} семантические действия (на языке, использующемся в качестве выходного - напр., Java) [...] параметры правила | оператор альтернативы .. оператор диапазона ~ отрицание . любой символ = присваивание : метка начала правила ; метка конца правила 

Пример простейшей грамматики[править | править код]

grammar T;//имя грамматики, должно совпадать с названием файла //нетерминальные символы: msg : 'name' ID ';'  	{ 		System.out.println("Hello, "+$ID.text+"!"); 	} ; //терминальные символы ID: 'a'..'z' + ;//произвольное ( но >=1) количество букв WS: (' ' |'\n' |'\r' )+ {$channel=HIDDEN;} ; // пробел, перенос строки, табуляция 

См. также[править | править код]

Примечания[править | править код]

  1. Таблица поддерживаемых языков. Дата обращения: 15 июня 2018. Архивировано из оригинала 29 июля 2018 года.

Литература[править | править код]

  • The Definitive ANTLR Reference: Building Domain-Specific Languages, ISBN 978-0-9787392-5-6 by Terence Parr. Pragmatic Bookshelf, 2007

Ссылки[править | править код]