我一直在努力让doxygen
与prolog
合作。
起初我只是试图包含一个"外部和未知的"文件,但正如doxygen用户所知,如果它找不到有用的(记录的)功能,它就不会打印出来。
搜索两个标签的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 :(得分: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
两次。但是可以记录这些功能。使用此配置:
INPUT = 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-Prolog网站上: SWI-Prolog news
使用您需要的未知语言进行doxygen工作:
PATH
可以找到。.cfg
以获得:
OPTIMIZE_OUTPUT_FOR_C =否
INPUT = README.md groups.dox source.pl
EXTRACT_ALL = YES
EXTRACT_STATIC = YES
FILE_PATTERNS = * .pl * .prolog * .swipl
FILTER_PATTERNS = * .pl =“dox4pl”
doxygen
。