Это теги команд, которые можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
otags - генерирует файлы тегов для emacs и vi / vim из исходников OCaml
СИНТАКСИС
отаг [СТАТИЧЕСКАЯ ОПЦИЯ] ... [ФАЙЛОВ] ... [ДИНАМИЧЕСКИЙ ВАРИАНТ] ... [ФАЙЛОВ] ...
ОПИСАНИЕ
отаг генерирует Тэги файлы для Emacs и имеют теги файлы для vi/напор дать этим редакторам
возможность прямого перехода к определениям функций и значений (используйте М-. в Emacs и ^] in
vi [m] с курсором на символе).
отаг использования камлп4 для разбора. Это более точно, чем теги на основе регулярных выражений.
С другой стороны, отаг может помечать только синтаксически правильные файлы. Более того, отаг is
OCaml для конкретной версии: исходники для компиляции OCaml версия XY может, в общем,
только быть помеченным отаг версия XY.
отаг может пометить все файлы, которые камлп4 может разбирать. Внутри отаг держит текущий синтаксический анализатор
список который можно изменить с помощью опций -ПК (Очистить список), -па (добавить в список) и -пр
(Восстановление значений по умолчанию). Значение по умолчанию текущий синтаксический анализатор список соответствует стандарту
OCaml синтаксис (содержащий парсеры r и oсм. СТАНДАРТНЫЕ РАСШИРЕНИЯ РАЗБОРКИ CAMLP4
ниже). Каждый исходный файл анализируется с помощью камлп4 парсер, в который все расширения синтаксического анализа
из текущий синтаксический анализатор список были загружены. В камлп4 стандартные парсеры связаны с
отаг и если текущий синтаксический анализатор список содержит только такие парсеры, то модуль синтаксического анализа
строить изнутри. В противном случае внешний камлп4 процесс запущен.
отаг помечает все элементы верхнего уровня в структурах и подписях, включая инфиксные операторы и
вложенные модули и подписи. Он также помечает переменные экземпляра и методы в классах и
типы классов. Имена файлов ФАЙЛОВ в командной строке анализируются как интерфейсы, если у них есть
.мли суффикс и как реализации, если они имеют .ml суффикс. (См. Также динамический
кредита -intf и -импл.)
отаг может пометить все файлы в дереве каталогов (если опция -r дано). Файлы, которые
Сгенерированно с помощью окамллекс or окамлячк или которые требуют предварительной обработки с камлп4 макрос
парсер, однако, должен быть помечен в том же каталоге, где были запущены эти инструменты.
Это потому, что строковые директивы окамллекс и окамлячк поместить в сгенерированные файлы
относятся к текущему рабочему каталогу процесса генерации. Для камлп4
макрос синтаксический анализатор ВКЛЮЧАЮТ директива может быть разрешена относительно текущего рабочего
справочник камлп4 процесс. Поэтому, если вы помечаете такие файлы из другого
каталог вы получите сообщение об ошибке.
При рекурсивной маркировке целых деревьев каталогов можно указать исключения из
текущий синтаксический анализатор список в файле подсказок парсера или дереве каталогов, см. опцию -parser-подсказки и
РАЗБОР НАДПИСИ ФАЙЛОВ ниже.
Файлы тегов могут содержать абсолютные и / или относительные имена файлов. Отаг использует имена файлов из
командная строка для файла тегов. Указание относительных имен файлов в командной строке
поэтому вы получите файл тегов с относительными именами файлов. Очевидно, файл тегов с
относительные имена файлов будут работать только в том случае, если они расположены в каталоге, в котором отаг законопроект
началась. Отаг поддерживает запись файла тегов с относительными именами файлов в родительском
каталог через опцию -добавить путьсм. ПРИМЕРЫ ниже.
СТАТИЧЕСКИЙ ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ
Статические параметры действуют на протяжении всего выполнения программы, независимо от их положения в
командная строка.
-r Перейти в каталоги. С этой опцией, если один из ФАЙЛОВ аргументы
каталог отаг будет рекурсивно помечать все файлы во всем дереве каталогов.
-o файл
Напишите теги в файл, По умолчанию Тэги (для Emacs) и расширение имеют теги для vi (если -ви
задана опция) в текущем каталоге. Если файл это тире ( - ) теги
записывается на стандартный вывод.
-a Добавить к существующему файлу TAGS (работает только для файлов TAGS emacs).
-vi Сгенерировать теги для vi и измените выходной файл по умолчанию на имеют теги.
-I dir Добавить каталог dir в камлп4 путь поиска объектных файлов для внешних камлп4
разбор звонков.
-add-path путь
Добавить путь перед каждым относительным именем файла в файле тегов. Полезно, когда
вы хотите поместить файл тегов в родительский каталог.
-parser-hints файл
Примените подсказки парсера к указанному дереву файла или каталогов. В любое время отаг имеют теги
файл, который появляется в файле подсказок парсера, он использует указанные там парсеры
вместо текущий синтаксический анализатор список, см. РАЗБОР ФАЙЛОВ С ПОМОЩЬЮ ниже. Этот вариант может
даваться несколько раз для обработки нескольких файлов подсказок. Если файл это каталог, тогда
все файлы в этом дереве обрабатываются как файлы подсказок парсера.
-версия
Версия для печати и выход.
-v Подробно. Печатать имена файлов по мере их анализа и командные строки для внешних
и политические лидеры камлп4 процессы парсинга (если есть). Если -v это первый аргумент командной строки
трассировки для исключений включены и печатаются, если исключение ускользает и
завершаясь отаг (что считается ошибкой, по поводу которой я был бы признателен за ошибку
отчет).
-q Тихо.
-help Распечатать список опций.
--help Псевдоним для -Помощь
DYNAMIC ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ
Динамические параметры влияют только на аргументы, следующие за ними в командной строке.
-intf ФАЙЛ
Разобрать и пометить ФАЙЛОВ как интерфейс.
-impl ФАЙЛ
Разобрать и пометить ФАЙЛОВ как реализация.
-pc Очистить текущий синтаксический анализатор список.
-pa парсер
Добавить синтаксический анализатор до текущий синтаксический анализатор список. Если синтаксический анализатор не один из стандартных
парсеры, которые распространяются с камлп4 затем следующие файлы анализируются в
отдельный камлп4 процесс (ы). синтаксический анализатор должен быть принят камлп4 -парсер, То есть
это должно быть стандартное имя парсера camlp4 или файл байт-кода (.cmo) или библиотека
(.сма).
-pr Сбросить текущий синтаксический анализатор список значение по умолчанию (стандарт синтаксического анализа OCaml без
расширения).
-pp Распечатать текущий синтаксический анализатор список.
-внешний
Форс-мажор отаг для анализа всех следующих файлов с помощью внешнего камлп4 процесса.
-интерн
Вернитесь к внутреннему синтаксическому анализу (по умолчанию).
РАЗБОР HINTS FILES
Файлы подсказок синтаксического анализа - это простые текстовые файлы, в которых указаны парсеры для определенных файлов. Это
полезно при рекурсивной пометке с опцией -r. Вот пример некоторых файлов из
OCaml распределение:
ок:
camlp4 / examples / parse_files.ml
или rq g:
camlp4 / examples / macros.ml
camlp4 / examples / arith.ml
rf отладка:
camlp4 / Camlp4Bin.ml
camlp4 / mkcamlp4.ml
camlp4 / camlp4prof.ml
camlp4 / camlp4prof.mli
Формат файлов подсказок парсера следующий. Пустые строки и строки, начинающиеся с символа `` # ''
игнорируются. Файл подсказок парсера состоит из произвольного количества разделов. Каждый раздел
начинается со строки, завершающейся двоеточием, которая указывает анализатор для использования с пробелом
разделенный список имён парсеров (например, принятые опцией -па). Остальная часть
Раздел содержит имена файлов, по одному в каждой строке. Начальные и конечные пробелы игнорируются.
ПРИМЕРЫ
Тег некоторые файлов in оригинал и некоторые in пересмотрен синтаксис:
отаг оригинал.мл -ПК -па r исправлено.мл -пр оригинал.мл
Команда -ПК необходимо, потому что для камлп4, оригинал OCaml синтаксис является расширением
измененный синтаксис. Поэтому по умолчанию текущий синтаксический анализатор список содержит парсер r уже
и добавление r не изменит текущий синтаксический анализатор список.
Тег файлов цитаты (исходный синтаксис хоста и измененный синтаксис цитаты):
отаг -па rq котировка.мл
Тег файлов который использование секс-библиотека расширение:
отаг -I / usr / lib / ocaml / тип-conv -I / usr / lib / ocaml / sexplib -па pa_type_conv.cmo
-па pa_sexp_conv.cmo use_sexp.ml
Команда -I параметры указывают каталоги, в которых pa_type_conv.cmo и pa_sexp_conv.cmo
расположен в системе.
Тег файлов in a подкаталог хранение имеют теги файл in родителя каталог
cd подкаталог; отаг -o ../ТЕГИ -добавить путь подкаталог ...
Эта сложная процедура необходима только в том случае, если внутри есть файлы. подкаталог с линией
директивы, содержащие относительные имена файлов (например, сгенерированные окамллекс or
окамлячк работает внутри подкаталог) и когда есть другие справочники, материалы которых
следует добавить к ../ТЕГИ. Если нет файлов с относительными строковыми директивами, можно
просто используйте "отаг -r "в каталоге, содержащем подкаталог. Если нет других
подкаталоги, в которые можно поместить файл тегов подкаталог без использования -o или -add-path.
STANDARD CAMLP4 РАЗБОР РАСШИРЕНИЯ
В настоящее время нет документации по именам и псевдонимам, которые относятся к стандартным камлп4
модули парсинга. Кроме того, зависимости между этими модулями в основном недокументированы. В
единственный источник информации - файл camlp4 / Camlp4Bin.ml в OCaml распределение.
В следующем списке описаны идентификаторы, которые камлп4 -парсер лечит специально. Этот
поэтому список стандартных камлп4 парсеры. Для этих идентификаторов регистр не
значительные (они проходят через Строка.нижний регистр перед сопоставлением). Зависимости
перечисленные здесь автоматически обрабатываются камлп4 и отаг.
r, окамлр, переработанный, pa_r.cmo, camlp4ocamlrevisedparser.cmo
Пересмотренный синтаксис без потоковых парсеров.
rr, перезагружается, ocamlreloaded, camlp4ocamlreloadedparser.cmo
Вариант измененного синтаксиса (использование неизвестно).
o, OCaml, pa_o.cmo, camlp4ocamlparser.cmo
Оригинальный синтаксис без потоковых парсеров. Зависит от парсера r.
rp, анализатор, pa_rp.cmo, camlp4ocamlпересмотренныйparserparser.cmo
Пересмотренный синтаксис с потоковыми парсерами. (См. Ошибку # 5134 для OCaml 3.12.0 и более ранних версий.)
Зависит от парсера r.
op, синтаксический анализатор, pa_op.cmo, camlp4ocamlparserparser.cmo
Оригинальный синтаксис с потоковыми парсерами. Зависит от парсера r, o, rp
g, грамматика, pa_extend.cmo, pa_extend_m.cmo, camlp4grammarparser.cmo
Грамматические расширения.
m, макрос, pa_macro.cmo, camlp4macroparser.cmo
Макросы и условные выражения.
q, camlp4quotationexpander.cmo
Светоотражающие цитаты. Это расширение синтаксического анализа принимает текущий синтаксис хоста и
добавляет расширители цитат с использованием этого текущего синтаксиса, чтобы получившаяся грамматика
является отражающим: изменение синтаксиса хоста впоследствии также влияет на цитату
синтаксис. Зависит от модуля Camlp4QuotationОбщие (общая котировочная инфраструктура).
rq, q_mlast.cmo, camlp4ocamlпересмотренная цитатаexpander.cmo
Пересмотренные расценки. Добавляет цитаты в измененный синтаксис. Хост и цитата
парсинг остается независимым. Зависит от модуля Camlp4QuotationОбщие (общий
цитатная инфраструктура).
oq, camlp4ocamlooriginalquotationexpander.cmo
Оригинальный OCaml с оригинальными цитатами. Загружает оригинальный OCaml (без потока
парсеры) как синтаксис хоста и как синтаксис цитаты. Синтаксис хоста и цитаты
независимый (не рефлексивный). Зависит от парсера окамлр, OCaml и модуль
Camlp4QuotationОбщие
rf Полная переработка. Устанавливает исправленный синтаксис с анализаторами потока, расширениями грамматики, списком
понимания и макросов и добавляет рефлексивные цитаты. Зависит от
парсеры / модули r, rp, Camlp4QuotationОбщие, q, g, комп, m.
of Оригинал полный. Устанавливает исходный OCaml с потоковыми парсерами, расширениями грамматики, списком
понимания и макросов и добавляет рефлексивные цитаты (т. е. цитаты в
оригинальный синтаксис). (См. Ошибку № 5129 для OCaml 3.12.0 и более ранних версий.) Зависит от
парсеры / модули r, o, rp, op, Camlp4QuotationОбщие, q, g, комп и m.
комп, camlp4listcomprehension.cmo
Составьте список понятий.
отлаживать, camlp4debugparser, camlp4debugparser.cmo
Операторы отладки отлаживать и camlp4_debug. Расширение этих заявлений
зависит от значения переменной окружения STATIC_CAMLP4_DEBUG так что также
производимые записи тегов могут зависеть от этой переменной.
ДИАГНОСТИКИ
Ошибки синтаксического анализа сообщаются с нормальным камлп4 Сообщения об ошибках. Теги не созданы для
файлы, которые вызывают ошибки. В этом случае добавление тегов продолжается к следующему файлу.
Сообщение об ошибке «Исходный источник недоступен» выдается, если файл, к которому относится строка
директива ссылается не может быть найдена. Это может произойти, если отаг запущен в другом
каталог, чем программа, которая сгенерировала файл с ошибкой.
Отаг существует с "Пустым списком парсеров для ..." при попытке обработать файл с
пустой текущий синтаксический анализатор список. Это случается, когда нет -па вариант следует -ПК.
Отаг печатает «Директива верхнего уровня найдена в ... Пропустить файл». для файлов, содержащих верхний уровень
директивы. Проблема в том, что информация о местоположении в абстрактном синтаксическом дереве
некорректно после директив верхнего уровня, см. ошибку # 5127.
Экранирование исключений и утверждений, которые завершаются отаг считаются ошибками. Если они
происходит, пожалуйста, используйте опцию -v as первый переключатель командной строки для получения трассировки исключения
и отправьте это вместе со всей соответствующей информацией как отчет об ошибке.
ВЫХОД статус
0 все прошло нормально
1 произошла ошибка синтаксического анализа или другая ошибка и отаг пропустил затронутый файл
2 возникла фатальная ошибка отаг чтобы прервать
3 какой-то баг вызвал сбой, из-за которого отаг мог лишь незначительно восстановиться
KNOWN ПРОБЛЕМЫ
Команда камлп4 и OCaml парсеры всегда тонко различались. Изготовление камлп4 независим от
OCaml усугубили проблему. камлп4 версия 4.02.3 принимает очень мало атрибутов. Это
не принимает никаких блочных или автономных атрибутов (с [@@ и [@@@) или узлы расширения (
[% or [%%). Отаг поэтому терпит неудачу на многих неудачах из OCaml стандартная библиотека.
ОТСУТСТВУЕТ ФУНКЦИИ И ОСОБЕННОСТИ
Добавление к файлам тегов vi требует перечитать существующий файл тегов, поскольку теги vi
файлы отсортированы.
Несовместимый камлп4 синтаксические деревья (из внешних камлп4 процессы парсинга) обнаружены
с магическими числами. Однако несовместимый камлп4 скорее всего умрет при попытке загрузки
отаг конкретный камлп4 принтер. Такие фатальные ошибки динамического загрузчика рассматриваются как
ошибки разбора, потому что камлп4 в обоих случаях выдает одинаковый статус выхода.
CREDITS
Куйтлауак Альварадо и Жан-Франсуа Монен первыми использовали камлп4 для маркировки
OCaml файлы. Эта версия является полностью переработанной, основанной на новом камлп4 от OCaml
версия 3.10 и новее.
Используйте otags онлайн с помощью сервисов onworks.net