我正在寻找扩展的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中使用不同的方法来处理终端,否定等等。因此,扩展性测试套件会更加方便。