3

我正在寻找扩展 DCG 测试用例。是指测试用例,根据生成的转换规则的行为而不是根据其脱糖能力来检查 DCG 处理器的正确功能。

我想我曾经在网上看到过一些这样的测试用例。但我失去了他们的踪迹。现在我只找到以下测试用例:

http://www.sju.edu/~jhodgson/wg17/Drafts/DCGs/test_cases
(此处相同:http ://www.sju.edu/~jhodgson/wg17/dcgs.pdf )

但它们只是外延和内涵的,即它们测试脱糖、转换是否成功或出错。他们甚至没有显示转换结果应该是什么,这并不困扰我,因为我无论如何都在寻找扩展 DCG 测试用例。

欢迎任何指点。

再见

PS:这个显示转换,但它仍然是内涵而不是外延:
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 中对终端、否定等使用不同的方法。所以扩展测试套件会更方便。

4

1 回答 1

2

刚刚完成了几个扩展 DCG 测试用例。测试用例确实涵盖以下内容:

谓词。/ 4: 终结
谓词 (-->) / 2: 非终结
谓词 (,) / 4: 连词
谓词 (;) / 4: 析取
谓词 (->) / 4: 蕴涵
谓词 (+) / 3: 否定 as失败
谓词!/ 2:切
谓语{} / 3:辅助条件

一些测试用例检查稳定性。测试用例总数为:56。

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

@(X) --> X.

测试用例的灵感来自:Moura, P. ed。(2010):序言,第 3 部分:定句语法规则,草案,ISO/IEC DTR 13211 3:2006,2010 年 4 月 1 日

于 2012-01-05T13:46:23.770 回答