我正在寻找扩展 DCG 测试用例。方法 检查 DCG 是否正常运行的测试用例 处理器就结果的行为而言 转换后的规则,而不是其脱糖 能力。
我想我曾经在网上看到过一些这样的测试用例。 但我失去了他们的踪迹。现在我只找到以下内容 测试用例:
http://www.sju.edu/~jhodgson/wg17/Drafts/DCGs/test_cases
(同样在这里:http://www.sju.edu/~jhodgson/wg17/dcgs.pdf)
但它们只是表面的和内涵的,即 他们测试脱糖、转化是否成功 或给出错误。他们甚至不显示转换是什么 结果应该是,这不会打扰我,因为我是 不管怎样,寻找扩展的 DCG 测试用例。
欢迎任何指点。
再见
附言:
这个显示了转换,但它仍然是内涵式的
而不是外延:
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 中的否定等。因此,扩展测试套件将 更得心应手。
刚刚完成了几个扩展 DCG 测试用例。测试用例 请涵盖以下内容:
谓词。 / 4:终端
谓词 (-->) / 2:非终结符
谓语 (,) / 4:连词
谓词 (;) / 4:析取
谓词 (->) / 4:蕴涵
谓词 (+) / 3:否定即失败
谓语! / 2:剪切
谓词 {} / 3:辅助条件
一些测试用例检查稳定性。总数 测试用例数为:56。
测试用例不涵盖 DCG 内的推回和元调用。 测试用例时不时地使用@/3,以便在使用listing/[0,1]时 看到的是原始的 DCG 代码,而不是它的扩展。 @/3 定义如下:
@(X) --> X.
测试用例的灵感来自于: 莫拉,P.编辑。 (2010):Prolog,第 3 部分:定句语法规则,草案,ISO/IEC DTR 13211 3:2006,2010 年 4 月 1 日