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

Преимущества Свободное программное обеспечение. Использование единой нотации для описания лексических и синтаксических анализаторов. Применение нисходящего, а не восходящего анализа. Удобство работы с абстрактным синтаксическим деревом. Предоставление сообщений об ошибках и восстановление после них. Наличие визуальных сред разработки (ANTLR Works, ANTLR Studio, плагинов к Eclipse и IntellliJ IDEA), которые позволяют создавать и отлаживать грамматики, поддерживают подсветку синтаксиса, автодополнение, визуальное отображание грамматик, строящееся в реальном времени по мере ввода, отладчик, рефакторинг.

Применение ANTLR широко используется в крупных известных продуктах: Реализация языков программирования Groovy, Jython, Processing, Apex Анализ языков запросов в системах баз данных Hibernate HQL, Cassandra, Hive, Pig Анализ языков программирования в средах разработки: NetBeans C++, Oracle SQL Developer IDE, IntelliJ IDEA Clion.

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

Пример простейшей грамматики grammar T;//имя грамматики, должно совпадать с названием файла //нетерминальные символы: msg : 'name' ID ';' { System.out.println("Hello, "+$ID.text+"!");

//терминальные символы ID: 'a'..'z' + ;//произвольное ( но >=1) количество букв WS: (' ' |'\n' |'\r' )+ {$channel=HIDDEN;} ; // пробел, перенос строки, табуляция

См. также LL-грамматики NetBeans IDE Синтаксический анализ JavaCC SableCC Coco/R Bison

Примечания

Литература The Definitive ANTLR Reference: Building Domain-Specific Languages, ISBN 978-0-9787392-5-6 by Terence Parr. Pragmatic Bookshelf, 2007

Ссылки Официальный сайт проекта Среда разработки для работы с ANTLR Написание парсеров с помощью ANTLR

Категория:Генераторы синтаксических анализаторов Категория:Свободные компиляторы и интерпретаторы