Обзор ANTLR



ANTLR (от англ. Another Tool For Language Recognition — «ещё одно средство распознавания языков») — генератор парсеров, позволяющий автоматически создавать программу-парсер (как и лексический анализатор) на одном из целевых языков программирования (C++, Java, C#, Python, Ruby) по описанию LL(*)-грамматики на языке, близком к РБНФ. Позволяет конструировать компиляторы, интерпретаторы, трансляторы с различных формальных языков. Предоставляет удобные средства для восстановления после ошибок и сообщения о них. ANTLR — продолжение PCCTS (Purdue Compiler Construction Tool Set), который был разработан в 1989 г.



Основоположником проекта и его главным вдохновителем является проф. Теренс Парр (Terence Parr) из Университета Сан-Франциско. ANTLR — проект с открытым свободным кодом, версия 3.0 распространяется по лицензии BSD. Проект в настоящее время активно развивается.
Создатели ANTLR утверждают, что многие преимущества при определении действий для правил являются следствием того, что ANTLR осуществляет LL разбор, то есть использует разбор сверху вниз, в отличие от bison и gppg, которые используют разбор снизу вверх. Кроме того, ANTLR выгодно отличается от других подобных программ наличием визуальной среды разработки ANTLRWorks, позволяющей удобно создавать и отлаживать грамматики: это многооконный редактор, поддерживающий подсветку синтаксиса, автодополнение, визуальное отображание грамматик, строящееся в реальном времени по мере ввода, отладчик, инструменты для рефакторинга и т. д.
Из википедии


Список где используется ANTLR указан по адресу: http://www.antlr.org/showcase/list
Вот что написано по этому адресу:

  • Используется в проекте Google App Engine (Python) - представленный Теренс Парр чт 14 января 2010 14:39. SDK Python App Engine использует эту библиотеку для анализа конфигурации расписания задач Cron. App Engine предоставляет библиотеку Antlr 3.1.1 для Python.
  • http://code.google.com/intl/ru/appengine/docs/python/tools/libraries.html
  • Используется и командой JetBrain в продукте Intellij IDEA и других их проектах
  • В продуктах компании Apple — Xcode «Apple унаследовала огромное ProjectBuilder от NeXTStep и добавила много ...»
  • IBM Tivoli Identity Manager (TIM) Александр Амис Чт 23 октября 2003 17:40 IBM Tivoli Identity Manager обеспечивает основанное на политиках управление идентификацией по …
  • В компании ORACLE - BEA WebLogic сб 14 июня 2003 10:55 BEA / WebLogic люди используют для ANTLR JSP разбора и многое другое в …
  • Yahoo! Язык запросов Представлено Теренс пт 7 августа 2009 16:50 Yahoo! Использует ANTLR для его языка запросов. Yahoo! Язык запросов Yahoo подобен SQL, который позволяет создавать запросы с фильтрацией и соединениями (JOIN) к данным через веб-сервисы.

И еще много где.
Главная часть проекта — генератор парсеров представляет из себя консольную программу, которой на вход подается файл с описанием грамматики конечного компилятора. Генератор читает этот файл, и в ответ генерирует исходные коды компилятора или ошибки, если грамматика нарушена.
ANTLR поддерживает несколько языков программирования, для которых можно генерировать парсеры
(на дату 30-04-2010, http://www.antlr.org/wiki/display/ANTLR3/Code+Generation+Targets):

  • JAVA - Поддерживается полностью и разрабатывается синхронно с ANTLR
  • C/C++ - Разрабатывается синхронно с ANTLR
  • C# - Разрабатывается синхронно с ANTLR, имеет две различные реализации: для .Net 1.1 и .Net 2.0
  • Objective C - В настоящее время догоняет релиз
  • Python - Разрабатывается синхронно с ANTLR, отсутствуют некоторые возможности
  • Ruby - Последняя рабочая версия v3.0ea7 
  • Perl - Легкий прототип, лексический анализатор работает
  • Perl6 - Не активно разрабатывается
  • PHP - В очень ранней разработке - альфа, некоторые примеры работают
  • Oberon - Планируется и анализируется, первая версия заявлена в 2007.
  • Ada95 - Частично реализовано
  • ActionScript - Разрабатывается синхронно с ANTLR
  • JavaScript -  Разрабатывается синхронно с ANTLR
  • Delphi - Прототип разработки.

На текущий момент созданы грамматики для следующих языков:
(на дату 30-04-2010, http://www.antlr.org/grammar/list)

  • Fortran 2008
  • XPath 2.0
  • C# 4
  • Python 3
  • XQuery
  • Modula-2
  • Smalltalk
  • SQL for MYSQL
  • CSS 2.1
  • CSS 3
  • JSON
  • Java 1.6
  • Objective C
  • C/C++
  • Oracle PL/SQL
  • EMCAScript 3
  • HTML 4
  • Lua 5.1
  • Oracle Net Services
  • Ruby
  • Eiffel
  • CORBA 3 IDL
  • MS SQL
  • ADA
  • Pascal
  • И другие...


Как пользоваться ANTLR будет позже

Графические средства

ANTLRWORKS
Хорошим дополнением к данному генератору является графическая среда разработки — ANTLRWORKS.
ANTLRWorks является средой разработки для грамматики ANTLR версии 3, написана Жаном Бовэ (Jean Bovet) (с предлагаемыми вариантами использования с Теренс Парр). Сочетает в себе редактор ориентированный на грамматику ANTLR, отладчик для изоляции грамматических ошибок, и графическое отображение грамматик.
ANTLRWorks помогает устранить не детерминированные грамматики, одну из самых трудных задач для начинающих, так и для экспертов, обращая внимание на не детерминированные пути в синтаксической диаграмме, связанные с грамматикой.
Цель ANTLRWorks является сделать более доступную разработку грамматик для среднего программиста, улучшение читаемости грамматик, предоставляя отличную навигацию по грамматике и средства рефакторинга, а также возможность решить наиболее распространенные вопросы и проблемы, с которыми сталкиваются разработчики грамматики.
ANTLRWORKS обладает следующими возможностями:

  • Подсветка синтаксиса
  • Навигация дереву правил грамматики (outline)
  • Переход к правилу и лексеме
  • Нахождение используемых правил и лексем
  • Автоматические дополнения
  • Автоматический отступ
  • Рефакторинг - нахождение/удаление левых рекурсий, и т.д. ...
  • Отображение диаграммы синтаксиса на лету
  • Отображение генерируемого исходника
  • Предупреждение о не детерминированной грамматике
  • Подсветка алгоритма детерминированных автоматов
  • Граф зависимости правил
  • Экспорт диаграмм
  • Интерпретирование грамматики на лету и отображение дерева анализа (parsing)
  • Локальный и удаленный отладчик
  • Динамический парсинг дерева для отладки
  • Динамическое дерево AST для отладки
  • Отладка грамматики дерева
  • Точки остановки в грамматике
  • Точки остановки в тексте
  • Точки останови на любом событии
  • Пошаговая отладка
  • Генерация кода
  • ...


ANTLR Plugin For ECLIPSE
http://antlreclipse.sourceforge.net/

  • Маркеры ошибок и предупреждений в файла грамматики
  • Многостраничный редактор с подсветкой синтаксиса
  • Обзор грамматики без комментариев и действий
  • Отображение дерева грамматики (outline)
  • Переход к правилу
  • Отображение справки (popup), 
  • Автоматические дополнения
  • Точки остановки для отладки
  • ...

ANTLR Studio
http://www.placidsystems.com/antlrstudio.aspx
Является графическим пакетом на базе Eclipse, распространяться за деньги и обладает схожими возможностями с ANTLRWORKS:

  • Подсветка синтаксиса ANTLR
  • Быстрое исправление ошибок (QuickFixes)
  • "Дерево" отображающее структуру файла ANTLR (outline)
  • Сообщения о ошибках и предупреждения
  • Автоматический отступ
  • Переход к правилу
  • Быстрые клавиши
  • Автоматические дополнения для абстрактного синтаксического дерева (AST) и лексем
  • Отображение графической диаграмм синтаксиса на лету
  • Отладчик
  • "Мастера" (WIZZARDS)
  • ... И другие функции

Комментариев нет:

Отправить комментарий