2015-06-27 2 views
2

Я изо всех сил пытался сделать doxygen работать с prolog.Как использовать Doxygen с Prolog

Сначала я только пытался включить «внешний и неизвестный» файл, но, как знают пользователи пользователей, он ничего не печатает, если не может найти полезные (документированные) функции.

Поиск stackoverflow для обоих тегов не дает однозначного ответа, и поэтому я решил спросить, даже если я уже решил головоломку, чтобы люди попали в случае поиска.

Здесь я задам этот вопрос, так как люди могут предложить простые обходные пути, и мы можем узнать немного больше о предмете, но я буду использовать его, чтобы зарегистрировать свой собственный ответ после некоторых (тяжелых) усилий. Благодарю.


Чтобы объяснить, где я начать:

Мой первый (почти) успешный подход работал отлично в программе, которая используется как C и PROLOG.

Это почти сработало, потому что последнее, я видел, что такой подход не будет работать только в проекте PROLOG.

Во всяком случае, то, что я сделал, было просто добавить этот

INPUT = README.md groups.dox c-and-pl.c c-and-pl.pl 
FILE_PATTERNS = *.pl 
EXTENSION_MAPPING += pl=c 
EXTRACT_ALL = YES 
EXTRACT_STATIC = YES 
SOURCE_BROWSER = YES 

И PROLOG код будет выглядеть следующим образом:

/** 
* @file cpl.pl 
* @ingroup GroupUnique 
* @brief CPL - C calls Prolog (Prolog module) 
* @cond SKIPPROLOG 
*/ 

/* brief explanation in a normal (non-doxygen) comment */ 
clause(A) :- 
    rule(X), 
    test(A, X). 

and(so, on). 

/** @endcond */ 

Это будет работать, потому что C бы создать сайт в любом случае, и PROLOG страница будет просто краткое, никаких предложений, а ссылка, чтобы увидеть полный код, с нормальными комментариями, объясняющими предложения.

Почему это не работает для чистого проекта PROLOG? И как это сделать?

ответ

0

Моя вторая попытка разрешить его участие в создании нового файла, копия оригинального PROLOG источника, но с комментариями в формате doxygen и преобразования PROLOG положения в чем-то C-like.

Позвоните, чтобы уточнить источник source.pl и вторую копию source.dox. Вы должны написать программу PROLOG, как вы обычно делаете, используя doxygen перед первым вхождением каждого п, атом, модуль и т.д.

Тогда cp source.pl source.dox и редактировать source.dox преобразование всех пунктов в чем-то вроде:

/** 
* \file source.pl 
* \ingroup GroupUnique 
*/ 

/** 
* \ingroup GroupUnique 
* \brief Defining factorial module 
*/ 
module(fatorial, [fatpl/2]); 

Это требует времени и подвержено ошибкам, но это было обходным путем. Проблема в том, что doxygen теперь перечисляет source.pl дважды. Но функции могут быть задокументированы. Используйте эту конфигурацию:

ВХОД = README.md groups.dox source.pl source.dox

Вы должны держать source.pl, потому что есть реальный источник видно. И source.dox будет больше похож на C header file.


Не хорошо. Работа по преобразованию вручную source.pl в source.dox привела меня к написанию моего собственного компилятора (ну, технически filter, который использует только лексические жетоны).

Программа доступна с открытым исходным кодом на GitHub:

https://github.com/drbeco/doxygenprolog

и приводится здесь в официальных страницах наряду с другими фильтрами: doxygen helpers

и немного внимания здесь, в официальном SWI- Сайт пролога: SWI-Prolog news

Чтобы заставить кислород работать с неизвестным вам языком:

  • Установить этот фильтр в каком-либо месте PATH.
  • Корректировать Doxygen .cfg иметь:

    OPTIMIZE_OUTPUT_FOR_C = NO

    ВХОД = README.md groups.dox source.pl

    EXTRACT_ALL = YES

    EXTRACT_STATIC = YES

    FILE_PATTERNS = * .pl * .prolog * .swipl

    FILTER_PATTERNS = * .pl = "dox4pl"

  • Теперь вы можете запустить ваш doxygen, как вы обычно делаете с другими языками.
Смежные вопросы