ANTLR
| ANTLR | |||
|---|---|---|---|
| Тип | Компилятор компиляторов | ||
| Авторы | Терренс Парр и другие | ||
| Разработчик | Terence Parr[вд] | ||
| Написана на | Java[3] | ||
| Дата выпуска | февраль 1992 | ||
| Аппаратная платформа | Кроссплатформенное программное обеспечение | ||
| Последняя версия | |||
| Репозиторий | github.com/antlr/antlr4 | ||
| |||
| Состояние | в разработке | ||
| Лицензия | модифицированная лицензия BSD[4][5] | ||
| Сайт | antlr.org (англ.) | ||
ANTLR (от англ. ANother Tool for Language Recognition — «ещё одно средство распознавания языков») — генератор нисходящих анализаторов для формальных языков. ANTLR преобразует контекстно-свободную грамматику в виде РБНФ в программу на C++, Java, C#, JavaScript, Go, Swift, Python[6]. Используется для разработки компиляторов, интерпретаторов и трансляторов.
Преимущества
- Свободное программное обеспечение.
- Использование единой нотации для описания лексических и синтаксических анализаторов.
- Применение нисходящего, а не восходящего анализа.
- Удобство работы с абстрактным синтаксическим деревом.
- Предоставление сообщений об ошибках и восстановление после них.
- Наличие визуальных сред разработки (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;} ; // пробел, перенос строки, табуляция
См. также
Примечания
- ↑ Release 4.13.2 — 2024.
- ↑ https://github.com/antlr/antlr4/blob/master/doc/grammars.md
- ↑ The antlr Open Source Project on Open Hub: Languages Page — 2006.
- ↑ https://github.com/antlr/antlr4/blob/master/LICENSE.txt
- ↑ The antlr Open Source Project on Open Hub: Licenses Page — 2006.
- ↑ Таблица поддерживаемых языков. Дата обращения: 15 июня 2018. Архивировано из оригинала 29 июля 2018 года.
Литература
- The Definitive ANTLR Reference: Building Domain-Specific Languages, ISBN 978-0-9787392-5-6 by Terence Parr. Pragmatic Bookshelf, 2007
Ссылки
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.