Расширительные тестовые случаи DCG - PullRequest
3 голосов
/ 08 декабря 2011

Я ищу дополнительные тестовые случаи 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. Поэтому набор тестов расширения был бы более удобным.

1 Ответ

2 голосов
/ 05 января 2012

Только что завершили пару расширенных тестовых случаев DCG .Тестовые случаи охватывают следующее:

Предикат./ 4: Клеммы
Предикат (->) / 2: Нетерминалы
Предикат (,) / 4: Соединение
Предикат (;) / 4: Разъединение
Предикат (->) /4: Значение
Предикат (+) / 3: Отрицание как сбой
Предикат!/ 2: Cut
Predicate {} / 3: Вспомогательные условия

Некоторые тесты проверяют на стойкость.Общее количество тестовых случаев: 56.

Тестовые случаи не охватывают push-назад и мета-вызовы внутри DCG.В тестовых примерах здесь и далее используется @ / 3, поэтому при использовании листинга / [0,1] виден оригинальный код DCG, а не его расширение.@ / 3 определяется следующим образом:

@(X) --> X.

Тестовые примеры основаны на: Moura, P. ed.(2010): Пролог, Часть 3: Правила грамматики для определенных статей, Проект, ИСО / МЭК DTR 13211 3: 2006, 1 апреля 2010 года

...