扩展 DCG 测试用例

发布于 2024-12-20 06:43:16 字数 958 浏览 0 评论 0原文

我正在寻找扩展 DCG 测试用例。方法 检查 DCG 是否正常运行的测试用例 处理器就结果的行为而言 转换后的规则,而不是其脱糖 能力。

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

http://www.sju.edu/~jhodgson/wg17/草稿/DCG/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 中的否定等。因此,扩展测试套件将 更得心应手。

I am looking for extensional DCG test cases. Means
test cases that check the right functioning of a DCG
processor in terms of the behaviour of the resulting
converted rules, and not in terms of its desugaring
capability.

I think I saw some such test cases once on the net.
But I lost track of them. Now I only find the following
test cases:

http://www.sju.edu/~jhodgson/wg17/Drafts/DCGs/test_cases
(Same here: http://www.sju.edu/~jhodgson/wg17/dcgs.pdf)

But they are only perpherically and intensional, i.e.
they test whether desugaring, the conversion, succeeds
or gives an error. They even don't show what the conversion
result should be, which doesn't bother me since I am
anyway looking for extensional DCG test cases.

Any pointers welcome.

Bye

P.S:
This one shows the conversion, but it is still intensional
and not extensional:
http://www.sju.edu/~jhodgson/wg17/GRIND.TXT
And it has for example:

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))).

But many Prolog systems use a different approach for terminals,
negation, etc.. in DCG. So an extensional test suite would
be more handy.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

霓裳挽歌倾城醉 2024-12-27 06:43:16

刚刚完成了几个扩展 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 日

Just completed a couple of extensional DCG test cases. The test cases
do cover the following:

Predicate . / 4: Terminals
Predicate (-->) / 2: Non-Terminals
Predicate (,) / 4: Conjunction
Predicate (;) / 4: Disjunction
Predicate (->) / 4: Implication
Predicate (+) / 3: Negatio as Failure
Predicate ! / 2: Cut
Predicate {} / 3: Auxiliary Conditions

Some of the test cases check for steadfastness. The total number
of test cases is: 56.

The test cases do not cover push back and meta calls inside DCG.
The test cases make use of @/3 here and then, so that when using listing/[0,1]
the original DCG code is seen and not the expansion of it. The @/3
is defined as follows:

@(X) --> X.

The test cases are inspired by:
Moura, P. ed. (2010): Prolog, Part 3: Definite Clause Grammar Rules, Draft, ISO/IEC DTR 13211 3:2006, April 1, 2010

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文