扩展DCG测试案例

时间:2011-12-08 17:06:30

标签: unit-testing prolog grammar dcg

我正在寻找扩展的DCG测试用例。手段 检查DCG正常运行的测试用例 处理器在结果的行为方面 转换的规则,而不是它的desugaring 能力。

我想我曾经在网上看过一些这样的测试用例。 但我忘记了他们。现在我只找到以下内容 测试用例:

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 个答案:

答案 0 :(得分:2)

刚刚完成了几个extensional DCG test cases。测试用例 请填写以下内容:

谓词。 / 4:终端
谓词( - >)/ 2:非终端
谓词(,)/ 4:连词
谓词(;)/ 4:分离
谓语( - >)/ 4:含义
谓词(+)/ 3:Negatio为失败
谓词! / 2:切 谓词{} / 3:辅助条件

一些测试用例检查坚定性。总数 测试用例是:56。

测试用例不包括DCG内部的回送和元调用。 测试用例在这里使用@ / 3,这样当使用listing / [0,1]时 看到原始的DCG代码,而不是它的扩展。 @ / 3 定义如下:

@(X) --> X.

测试案例的灵感来自: Moura,P。ed。 (2010):Prolog,第3部分:明确的条款语法规则,草案,ISO / IEC DTR 13211 3:2006,2010年4月1日