Это команда antlr, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
antlr - Другой инструмент для распознавания языков
СИНТАКСИС
Antlr [кредита] грамматические_файлы
ОПИСАНИЕ
рог преобразует расширенную форму контекстно-свободной грамматики в набор функций C, которые
непосредственно реализовать эффективную форму детерминированного парсера LL (k) с рекурсивным спуском.
Бесконтекстные грамматики могут быть дополнены предикатами, чтобы позволить семантике влиять на
парсинг; это позволяет использовать контекстно-зависимый синтаксический анализ. Выборочный возврат также
доступен для обработки не-LL (k) и даже не-LALR (k) конструкций. рог также производит
определение лексера, который может быть автоматически преобразован в код C для основанного на DFA
lexer от DLG, Следовательно, Antlr выполняет функцию, во многом аналогичную функции YaccОднако это
заметно более гибкий и более интегрированный с генератором лексера (Antlr непосредственно
генерирует DLG код, тогда как Yacc и закон даны независимые описания). В отличие от Yacc
который принимает ЛАЛР(1) грамматики, Antlr принимает грамматики LL (k) в расширенной нотации BNF -
что устраняет необходимость в правилах приоритета.
Подобно Yacc грамматики Antlr грамматики могут использовать автоматически поддерживаемый атрибут символа
значения, указанные как долларовые переменные. Далее, поскольку Antlr генерирует нисходящие парсеры,
произвольные значения могут быть унаследованы от родительских правил (переданы как параметры функции).
рог также имеет механизм для создания абстрактных синтаксических деревьев и управления ими.
В Antlr, включая возможность распространения одной грамматики
над несколькими файлами или даже несколькими грамматиками в одном файле, возможность генерировать
версия грамматики с исключенными действиями (для целей документации) и лоты
больше.
ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ
-ск n Используйте до n символы опережающего просмотра при использовании сжатого (линейная аппроксимация)
смотреть вперед. Этот тип опережающего просмотра очень дешев в вычислении, и его пытаются предпринять до того, как
полный упреждающий просмотр LL (k), который в худшем случае имеет экспоненциальную сложность. В
как правило, сжатый просмотр вперед может быть намного глубже (например, -ck 10), чем полный
опережающий просмотр (который обычно должен быть меньше 4).
-CC Генерация вывода C ++ как из ANTLR, так и из DLG.
-кр Создайте перекрестную ссылку для всех правил. Для каждого правила распечатайте список всех остальных
правила, которые ссылаются на него.
-e1 Неопределенности / ошибки показаны с низким уровнем детализации (по умолчанию).
-e2 Неясности / ошибки показаны более подробно.
-e3 Неопределенности / ошибки показаны в мучительных деталях.
-вера файл
Переименовывать ошибка.с в файл.
-фх файл
Переименовывать stdpccts.h заголовок (включает -гх) в файл.
-фл файл
Переименовать лексический вывод, parser.dlg, в файл.
-FM файл
Переименовать файл с определениями лексического режима, режим.ч, в файл.
-пт файл
Переименовать файл, который переназначает глобально видимые символы, переназначить.h, в файл.
-фут файл
Переименовывать токены.ч в файл.
-га Сгенерировать ANSI-совместимый код (регистр по умолчанию). Это не было тщательно проверено
чтобы быть совместимым с ANSI XJ11 C, но это близко. Нормальный выход Antlr is
в настоящее время компилируется как под K&R, так и под ANSI C и C ++ - этот параметр ничего не делает
потому что Antlr генерирует кучу # ifdef для правильных действий в зависимости от
язык.
-gc Указывает на то, что Antlr не должен генерировать код C, т. е. выполнять анализ только на
грамматика.
-гд Код C вставляется в каждый из Antlr сгенерированные функции синтаксического анализа для обеспечения
определяемая пользователем обработка подробной трассировки синтаксического анализа. Вставленный код состоит из
вызовы пользовательских макросов или функций, вызываемых zzTRACEIN и zzTRACEOUT.
Единственный аргумент - это колесница * указывая на строку в стиле C, которая является грамматикой
правило, распознаваемое текущей функцией синтаксического анализа. Если определение для
функции трассировки, при входе в правило и выходе из него будет напечатано сообщение с указанием
что конкретное правило было введено или отменено.
-гэ Создайте класс ошибки для каждого нетерминала.
-гх Создайте stdpccts.h для включения файлов, не созданных с помощью ANTLR. Этот файл содержит
все определения, необходимые для описания типа парсера, сгенерированного Antlr (например, сколько
lookahead используется и независимо от того, построены ли деревья) и содержит заголовок
действие, указанное пользователем.
-гк Сгенерируйте синтаксические анализаторы, которые откладывают предварительную выборку до тех пор, пока они не понадобятся. Без этой опции
Antlr генерирует парсеры, у которых всегда есть k доступны токены просмотра вперед.
-гл Генерация строковой информации о грамматических действиях в синтаксическом анализаторе C формы # линия "файл"
что делает сообщения об ошибках от компилятора C / C ++ более понятными, поскольку они
укажите в файл грамматики, а не в результирующий файл C. Отладка тоже проще,
потому что вы будете проходить через грамматику, а не файл C.
-гс Не создавайте наборы для списков выражений токенов; вместо этого генерировать ||-отделенный
Последовательность из LA(1) ==номер_токена. По умолчанию создаются наборы.
-GT Сгенерируйте код для абстрактно-синтаксических деревьев.
-gx Не создавайте файлы лексического анализатора (связанные с dlg). Этот вариант должен быть
дается, когда пользователь желает предоставить индивидуальный лексический анализатор. Это также может
использоваться в сделать скрипты, заставляющие перестраивать только парсер, когда изменение не
влияющие на лексическую структуру вносятся во входные грамматики.
-k n Установите k LL (k) на n; т.е. установить токены упреждающего просмотра (по умолчанию == 1).
-o dir Каталог, в который должны помещаться выходные файлы (по умолчанию = "."). Это очень приятно для
держать исходный каталог подальше от порождения ANTLR и DLG.
-p Полная грамматика, собранная из всех входных файлов грамматики и исключенная
комментарии и встроенные действия, перечислены в стандартный вывод. Это предназначено для помощи в
просмотр всей грамматики в целом и устранение необходимости сохранять действия
изложено кратко, чтобы грамматика легче читалась. Следовательно, предпочтительнее
встраивать даже сложные действия прямо в грамматику, а не называть их
подпрограмм, поскольку накладные расходы на вызов подпрограмм будут сохранены.
-па Этот вариант аналогичен -p за исключением того, что результат аннотируется первым
наборы, определенные на основе грамматического анализа.
-ПРЦ on
Включите вычисление и подъем контекста предиката.
-ПРЦ от
Отключите вычисление и подъем контекста предиката. Эта опция составляет 1.10
вести себя как версия 1.06 с опцией -пр на. Вычисление контекста отключено
по умолчанию.
-рл n Ограничьте максимальное количество узлов дерева, используемых при грамматическом анализе, до n.
Время от времени, Antlr не может анализировать грамматику, отправленную пользователем. Этот
Редкая ситуация может возникнуть только тогда, когда грамматика большая и количество опережающих
больше единицы. PCCTS использует алгоритм нелинейного анализа для обработки
общий случай парсинга LL (k). Однако средняя сложность анализа составляет
почти линейный из-за некоторой причудливой работы ног в реализации, которая снижает
количество обращений к полному алгоритму LL (k). Будет отображено сообщение об ошибке,
если этот предел достигнут, что указывает на анализируемую грамматическую конструкцию, когда
Antlr поразила нелинейность. Используйте эту опцию, если Antlr кажется, идёт обедать и
ваш диск начинает ломиться; пытаться n= 10000 для начала. Как только нарушающая конструкция
были выявлены, постарайтесь устранить двусмысленность, которая Antlr пытался преодолеть
большой упреждающий анализ. Вступление к (...)? блоки обратного отслеживания
устраняет некоторые из этих проблем - Antlr не анализирует альтернативы, которые начинаются
с участием (...)? (он просто выполняет возврат, если необходимо, во время выполнения).
-w1 Установите низкий уровень предупреждения. Не предупреждать, если семантические предикаты и / или (...)? блоки
предполагается, что охватывает неоднозначные альтернативы.
-w2 Неоднозначные решения синтаксического анализа вызывают предупреждения, даже если семантические предикаты или (...)?
блоки используются. Предупреждать, если вычислен контекст предиката и семантические предикаты
неполное устранение неоднозначности альтернативных производств.
- Считайте грамматику со стандартного ввода и сгенерируйте stdin.c как файл парсера.
SPECIAL ОТХОДОВ
рог работает ... думаем. Нет никаких подразумеваемых гарантий. Мы не оставляем за собой никаких
юридически права на программное обеспечение, известное как Purdue Compiler Construction Tool Set (PCCTS) -
PCCTS находится в общественном достоянии. Человек или компания могут делать с ними все, что захотят.
исходный код, распространяемый с помощью PCCTS, или код, сгенерированный PCCTS, включая
включение PCCTS или его результатов в коммерческое программное обеспечение. Мы рекомендуем пользователям
разрабатывать программное обеспечение с помощью PCCTS. Тем не менее, мы просим предоставить нам заслуги в разработке
PCCTS. Под «кредитом» мы подразумеваем, что если вы включите наш исходный код в один из своих
программы (коммерческий продукт, исследовательский проект или другие), которые вы признаете
факт где-то в документации, отчете об исследовании и т. д ... Если вам нравится PCCTS и у вас есть
разработали хороший инструмент с выходными данными, пожалуйста, укажите, что вы разработали его с использованием PCCTS.
Мы ожидаем продолжения улучшения этой системы, пока соблюдаются эти рекомендации.
ожидайте, что будут доступны другие инструменты по мере их завершения.
Используйте antlr онлайн с помощью сервисов onworks.net