ANTLR: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Guranvir (обсуждение | вклад) Нет описания правки |
Guranvir (обсуждение | вклад) Нет описания правки |
||
Строка 18: | Строка 18: | ||
| website = http://www.antlr.org/ |
| website = http://www.antlr.org/ |
||
}} |
}} |
||
'''ANTLR''' (от {{lang-en|'''Another Tool For Language Recognition'''}} — «ещё одно средство распознавания языков») — генератор [[парсер]]ов, позволяющий автоматически создавать программу-парсер (как и [[лексический анализатор]]) на одном из целевых языков программирования ([[C++]], [[Java]], [[C Sharp|C#]], [[Python]], [[Ruby]])[http://www.antlr.org/wiki/display/ANTLR3/Code+Generation+Targets Таблица поддерживаемых языков] по описанию [[LL-анализатор|LL(*)]]-грамматики на языке, близком к [[Расширенная форма Бэкуса — Наура|РБНФ]]. Позволяет конструировать [[компиляторы]], [[интерпретатор]]ы, [[транслятор]]ы с различных формальных языков. Предоставляет удобные средства для восстановления после ошибок и сообщения о них. ANTLR — продолжение [[PCCTS]] ({{lang-en2|Purdue Compiler Construction Tool Set}}), который был разработан в 1989 г. |
'''ANTLR''' (от {{lang-en|'''Another Tool For Language Recognition'''}} — «ещё одно средство распознавания языков») — генератор [[парсер]]ов, позволяющий автоматически создавать программу-парсер (как и [[лексический анализатор]]) на одном из целевых языков программирования ([[C++]], [[Java]], [[C Sharp|C#]], [[Python]], [[Ruby]])<ref>[http://www.antlr.org/wiki/display/ANTLR3/Code+Generation+Targets Таблица поддерживаемых языков]</ref> по описанию [[LL-анализатор|LL(*)]]-грамматики на языке, близком к [[Расширенная форма Бэкуса — Наура|РБНФ]]. Позволяет конструировать [[компиляторы]], [[интерпретатор]]ы, [[транслятор]]ы с различных формальных языков. Предоставляет удобные средства для восстановления после ошибок и сообщения о них. ANTLR — продолжение [[PCCTS]] ({{lang-en2|Purdue Compiler Construction Tool Set}}), который был разработан в 1989 г. |
||
== Краткая справка элементов языка == |
== Краткая справка элементов языка == |
||
Строка 63: | Строка 63: | ||
== Литература == |
== Литература == |
||
* ''The Definitive ANTLR Reference: Building Domain-Specific Languages'', ISBN 978-0-9787-3925-6 by Terence Parr. Pragmatic Bookshelf, 2007 |
* ''The Definitive ANTLR Reference: Building Domain-Specific Languages'', ISBN 978-0-9787-3925-6 by Terence Parr. Pragmatic Bookshelf, 2007 |
||
<references />. |
|||
== Ссылки == |
== Ссылки == |
||
* [http://www.antlr.org/ Официальный сайт проекта] |
* [http://www.antlr.org/ Официальный сайт проекта] |
Версия от 18:22, 4 сентября 2010
ANTLR | |
---|---|
Тип | Компилятор компиляторов |
Авторы | Terence Parr и другие |
Разработчик | Terence Parr[вд] |
Написана на | Java |
Первый выпуск | Февраль 1992 |
Аппаратная платформа | Cross-platform |
Последняя версия | 3.2 (23 сентября 2009) |
Репозиторий | github.com/antlr/antlr4 |
Состояние | in active development |
Лицензия | BSD License |
Сайт | antlr.org |
ANTLR (от англ. Another Tool For Language Recognition — «ещё одно средство распознавания языков») — генератор парсеров, позволяющий автоматически создавать программу-парсер (как и лексический анализатор) на одном из целевых языков программирования (C++, Java, C#, Python, Ruby)[1] по описанию LL(*)-грамматики на языке, близком к РБНФ. Позволяет конструировать компиляторы, интерпретаторы, трансляторы с различных формальных языков. Предоставляет удобные средства для восстановления после ошибок и сообщения о них. ANTLR — продолжение PCCTS (Purdue Compiler Construction Tool Set), который был разработан в 1989 г.
Краткая справка элементов языка
(...) подправило
(...)* повторение подправила 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, позволяющей удобно создавать и отлаживать грамматики: это многооконный редактор, поддерживающий подсветку синтаксиса, автодополнение, визуальное отображание грамматик, строящееся в реальном времени по мере ввода, отладчик, инструменты для рефакторинга и т. д.
См. также
Литература
- The Definitive ANTLR Reference: Building Domain-Specific Languages, ISBN 978-0-9787-3925-6 by Terence Parr. Pragmatic Bookshelf, 2007
.
Ссылки
Это заготовка статьи о программном обеспечении. Помогите Википедии, дополнив её. |