3

拡張 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 の終端、否定などに異なるアプローチが使用されています。したがって、拡張テスト スイートの方が便利です。

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 に答える