扩展DCG测试案例

3
我正在寻找扩展的DCG测试用例。这意味着测试用例检查DCG处理器的正确功能,而不是其解糖能力的行为结果。我曾经在网上看到过一些这样的测试用例,但现在我已经失去了它们的踪迹。现在我只发现以下测试用例:http://www.sju.edu/~jhodgson/wg17/Drafts/DCGs/test_cases(同样在这里:http://www.sju.edu/~jhodgson/wg17/dcgs.pdf)。但是它们只是表面和内涵的,即它们测试解糖是否成功转换或出错。它们甚至不显示转换结果应该是什么,但这并不影响我,因为我正在寻找扩展的DCG测试用例。欢迎任何指针。再见。

P.S. 这个例子展示了转换,但仍然是内涵的而不是外延的:
http://www.sju.edu/~jhodgson/wg17/GRIND.TXT
它包含了例如:

expand(( a(4)-->[98] ),
   (a(4, S0, S1):- 'C'( S0,98, S1))).
expand(( a(28)--> \+b,c ),
   (a(28,_608,_609):-(b(_608,_619)->fail;_617=_608),c(_617,_609))).

但是许多Prolog系统在DCG中使用不同的方法来处理终端,否定等等。因此,扩展性测试套件会更加方便。

1个回答

2
刚刚完成了一些外延 DCG 测试用例。这些测试用例包括以下内容:
谓词 . / 4:终结符
谓词 (-->) / 2:非终结符
谓词 (,) / 4:合取
谓词 (;) / 4:析取
谓词 (->) / 4:蕴涵
谓词 (+) / 3:否定为失败
谓词 ! / 2:剪枝
谓词 {} / 3:辅助条件

其中一些测试用例检查了坚定性。总测试用例数为 56。
这些测试用例不涉及 DCG 内部的回溯和元调用。这些测试用例在此处使用 @/3,以便在使用 listing/[0,1] 时看到原始 DCG 代码而非其扩展形式。@/3 的定义如下:
@(X) --> X.

测试用例的灵感来源于: Moura, P. 编辑(2010年):Prolog,第3部分:确定性子句语法规则,草案,ISO/IEC DTR 13211 3:2006,2010年4月1日。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接