ANTLR | это... Что такое ANTLR? (original) (raw)
ANTLR
Автор | Терренс Парр и другие |
---|---|
Написана на | Java |
Первый выпуск | Февраль 1992 |
Аппаратная платформа | Кроссплатформенное программное обеспечение |
Последняя версия | 3.4 (18 июля 2011) |
Состояние | в разработке |
Лицензия | BSD |
Сайт | http://www.antlr.org/ |
ANTLR (от англ. ANother Tool for Language Recognition — «ещё одно средство распознавания языков») — генератор парсеров, позволяющий автоматически создавать программу-парсер (как и лексический анализатор) на одном из целевых языков программирования (C++, Java, C#, Python, Ruby)[1] по описанию LL(*)-грамматики на языке, близком к РБНФ. Позволяет конструировать компиляторы, интерпретаторы, трансляторы с различных формальных языков. Предоставляет удобные средства для восстановления после ошибок и сообщения о них. ANTLR — продолжение PCCTS (Purdue Compiler Construction Tool Set), который был разработан в 1989 г.
Содержание
- 1 Краткая справка элементов языка
- 2 Пример простейшей программы
- 3 См. также
- 4 Примечания
- 5 Литература
- 6 Ссылки
Краткая справка элементов языка
(...) подправило (...)* повторение подправила 0 или более раз (...)+ Повторение подправила 1 или более раз (...)? подправило, может отсутствовать {...} семантические действия (на языке, использующемся в качестве выходного - напр., Java) [...] параметры правила | оператор альтернативы .. оператор диапазона ~ отрицание . любой символ = присваивание : метка начала правила ; метка конца правила
Пример простейшей программы
grammar T;//имя грамматики, должно совпадать с названием файла //нетерминальные символы: msg : 'name' ID ';' { System.out.println("Hello, "+$ID.text+"!"); } ; //терминальные символы ID: 'a'..'z' + ;//произвольное ( но >=1) количество букв WS: (' ' |'\n' |'\r' )+ {$channel=HIDDEN;} ; // пробел, перенос строки, табуляция
Основоположником проекта и его главным вдохновителем является проф. Теренс Парр (Terence Parr) из Университета Сан-Франциско. ANTLR — проект с открытым исходным кодом, версия 3.0 распространяется по лицензии BSD. Проект в настоящее время активно развивается.
Создатели ANTLR утверждают, что многие преимущества при определении действий для правил являются следствием того, что ANTLR осуществляет LL разбор, то есть использует разбор сверху вниз, в отличие от bison и gppg, которые используют разбор снизу вверх. Кроме того, ANTLR выгодно отличается от других подобных программ наличием визуальной среды разработки ANTLRWorks, позволяющей удобно создавать и отлаживать грамматики: это многооконный редактор, поддерживающий подсветку синтаксиса, автодополнение, визуальное отображание грамматик, строящееся в реальном времени по мере ввода, отладчик, инструменты для рефакторинга и т. д.
См. также
- LL-грамматики
- Синтаксический анализ
- JavaCC
- SableCC
- Coco/R
Примечания
.
Литература
- The Definitive ANTLR Reference: Building Domain-Specific Languages, ISBN 978-0-9787392-5-6 by Terence Parr. Pragmatic Bookshelf, 2007