Jump to content

АНТЛР

(Перенаправлено с Antlr )
АНТЛР
Оригинальный автор(ы) Теренс Парр и другие
Первоначальный выпуск 10 апреля 1992 г .; 32 года назад ( 10.04.1992 )
Стабильная версия
4.13.1 / 4 сентября 2023 г .; 11 месяцев назад ( 04.09.2023 )
Репозиторий
Написано в Ява
Платформа Кросс-платформенный
Лицензия Лицензия БСД
Веб-сайт www .antlr .org

В компьютерном распознавании языка ANTLR (произносится как рог ) или ANother Tool for Language Recognition — это генератор синтаксического анализатора , использующий для анализа алгоритм LL(*) . ANTLR является преемником набора инструментов Purdue Compiler Construction Tool Set ( PCCTS ), впервые разработанного в 1989 году и находящегося в стадии активной разработки. Его сопровождающим является профессор Теренс Парр из Университета Сан-Франциско . [ нужна ссылка ]

PCCTS 1.00 был анонсирован 10 апреля 1992 года. [ 1 ] [ 2 ]

Использование

[ редактировать ]

ANTLR принимает на вход грамматику , которая определяет язык, и генерирует на выходе исходный код для распознавателя этого языка. Хотя версия 3 поддерживала генерацию кода на языках программирования Ada95 , Экшнскрипт , С , С# , Ява , JavaScript , Цель-С , Перл , Питон , Ruby и Standard ML , [ 3 ] Версия 4 в настоящее время нацелена С#, С++, Дарт , [ 4 ] [ 5 ] Ява, JavaScript, Идти , PHP , Питон (2 и 3), и Свифт .

Язык определяется с использованием контекстно-свободной грамматики , выраженной с использованием расширенной формы Бэкуса-Наура (EBNF). [ нужна ссылка ] [ 6 ] ANTLR может генерировать лексеры , парсеры , парсеры деревьев и комбинированные лексеры-парсеры . Синтаксические анализаторы могут автоматически генерировать деревья синтаксического анализа или деревья абстрактного синтаксиса , которые могут быть дополнительно обработаны с помощью анализаторов деревьев. ANTLR предоставляет единую согласованную нотацию для определения лексеров, анализаторов и анализаторов деревьев.

По умолчанию ANTLR читает грамматику и генерирует распознаватель для языка, определенного грамматикой (т. е. программу, которая считывает входной поток и генерирует ошибку, если входной поток не соответствует синтаксису, указанному грамматикой). Если синтаксических ошибок нет, действие по умолчанию — просто выйти без вывода какого-либо сообщения. Чтобы сделать что-то полезное с языком, к элементам грамматики можно прикрепить действия. Эти действия написаны на языке программирования, на котором генерируется распознаватель. Когда распознаватель генерируется, действия встраиваются в исходный код распознавателя в соответствующих точках. В случае компилятора действия можно использовать для построения и проверки таблиц символов, а также для выдачи инструкций на целевом языке. [ нужна ссылка ] [ 6 ]

Помимо лексеров и парсеров, ANTLR можно использовать для создания парсеров деревьев. Это распознаватели, обрабатывающие абстрактные синтаксические деревья, которые могут автоматически генерироваться парсерами. Эти парсеры деревьев уникальны для ANTLR и помогают обрабатывать абстрактные синтаксические деревья. [ нужна ссылка ] [ 6 ]

Лицензирование

[ редактировать ]

АНТЛР 3 [ нужна ссылка ] и ANTLR 4 — свободное программное обеспечение из трех пунктов , опубликованное под лицензией BSD . [ 7 ] Предыдущие версии были выпущены как общедоступное программное обеспечение . [ 8 ] Документация, взятая из книги Парра The Definitive ANTLR 4 Reference , включена в исходный код ANTLR 4 под лицензией BSD. [ 7 ] [ 9 ]

были разработаны различные плагины Для среды разработки Eclipse для поддержки грамматики ANTLR, включая ANTLR Studio , собственный продукт а также «ANTLR 2». [ 10 ] и «АНТЛР 3» [ 11 ] плагины для Eclipse, размещенные на SourceForge . [ нужна ссылка ]

ANTLR 4 правильно работает с прямой левой рекурсией , но не с левой рекурсией в целом, то есть грамматическими правилами x , которые ссылаются на y , которые ссылаются на x . [ 12 ]

Разработка

[ редактировать ]

Как сообщается об инструментах [ 13 ] На странице проекта ANTLR плагины, которые включают такие функции, как подсветка синтаксиса, проверка синтаксических ошибок и завершение кода, свободно доступны для наиболее распространенных IDE ( Intellij IDEA, NetBeans , Eclipse , Visual Studio). [ 14 ] и код Visual Studio ).

Программное обеспечение, созданное с использованием ANTLR, включает в себя:

доступно более 200 грамматик, реализованных в ANTLR 4 На GitHub . [ 19 ] Они варьируются от грамматик для URL-адресов до грамматик для целых языков, таких как C, Java и Go.

В следующем примере парсер в ANTLR описывает сумму выражений, которую можно увидеть в виде «1+2+3»:

 // Common options, for example, the target language
 options
 {
  language = "CSharp";
 }
 // Followed by the parser 
 class SumParser extends Parser;
 options
 {
   k = 1; // Parser Lookahead: 1 Token
 }
 // Definition of an expression
 statement: INTEGER (PLUS^ INTEGER)*;
 // Here is the Lexer
 class SumLexer extends Lexer;
 options
 {
   k = 1; // Lexer Lookahead: 1 characters
 }
 PLUS: '+';
 DIGIT: ('0'..'9');
 INTEGER: (DIGIT)+;

Следующий листинг демонстрирует вызов синтаксического анализатора в программе:

 TextReader reader;
 // (...) Fill TextReader with character
 SumLexer lexer = new SumLexer(reader);
 SumParser parser = new SumParser(lexer);

 parser.statement();

См. также

[ редактировать ]
  1. ^ «Comp.compilers: доступен набор инструментов Purdue Compiler-Construction Tool 1.00» . compilers.iecc.com . 10 апреля 1992 года . Проверено 5 мая 2023 г.
  2. ^ «Comp.compilers: Еще о PCCTS» . compilers.iecc.com . 30 апреля 1992 года . Проверено 5 мая 2023 г.
  3. ^ Инструменты обработки языка SML/NJ: Руководство пользователя
  4. ^ «Библиотеки времени выполнения и цели генерации кода» . гитхаб . 6 января 2022 г.
  5. ^ «Среда выполнения ANTLR4 C++ добралась до дома — Soft Gems» .
  6. ^ Jump up to: а б с Парр, Теренс (15 января 2013 г.). Полный справочник по ANTLR 4 . Прагматичная книжная полка. ISBN  978-1-68050-500-9 .
  7. ^ Jump up to: а б "antlr4/ЛИЦЕНЗИЯ.txt" . Гитхаб . 2017-03-30.
  8. ^ Парр, Теренс (5 февраля 2004 г.). «лицензионные штучки» . antlr-interest (список рассылки). Архивировано из оригинала 18 июля 2011 г. Проверено 15 декабря 2009 г.
  9. ^ «Документация ANTLR 4» . Гитхаб . 2017-03-30.
  10. ^ «Плагин ANTLR для Eclipse» .
  11. ^ «ANTLR IDE. Плагин eclipse для грамматик ANTLR» .
  12. ^ В чем разница между ANTLR 3 и 4
  13. ^ «Инструменты разработки ANTLR» .
  14. ^ «Поддержка языка ANTLR — Visual Studio Marketplace» .
  15. ^ «GroovyRecouncer (Groovy 2.4.0)» .
  16. ^ «Джитон: 31d97f0de5fe» .
  17. ^ Эберсоул, Стив (6 декабря 2018 г.). «Выпущена Hibernate ORM 6.0.0.Alpha1» . В отношении блога команды Hibernate, посвященного всем данным . Проверено 11 июля 2020 г.
  18. ^ «OpenJDK: Грамматика компилятора» .
  19. ^ Грамматики написаны для ANTLR v4; ожидание, что грамматики свободны от действий.: antlr/grammars-v4 , Antlr Project, 25 сентября 2019 г. , получено 25 сентября 2019 г.

Библиография

[ редактировать ]

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1680b4820ad271fa153ff2e6f851936e__1698216360
URL1:https://arc.ask3.ru/arc/aa/16/6e/1680b4820ad271fa153ff2e6f851936e.html
Заголовок, (Title) документа по адресу, URL1:
ANTLR - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)