From bf9654e1383c11be80746da5a4dc9e0fd37fed4b Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Sat, 3 Jul 2021 09:54:01 +0200 Subject: [PATCH] ADDED: ... //0, describing an arbitrary number of elements This is a very versatile nonterminal. For instance, repeated elements: ?- phrase((...,[E],...,[E],...), "hello!!"). %@ E = l %@ ; E = ! %@ ; false. --- src/lib/dcgs.pl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lib/dcgs.pl b/src/lib/dcgs.pl index e1751d8c..f4cee25c 100644 --- a/src/lib/dcgs.pl +++ b/src/lib/dcgs.pl @@ -3,7 +3,9 @@ phrase/2, phrase/3, seq//1, - seqq//1]). + seqq//1, + ... //0 + ]). :- use_module(library(error)). :- use_module(library(lists), [append/3]). @@ -188,3 +190,6 @@ seq([E|Es]) --> [E], seq(Es). % Describes a sequence of sequences seqq([]) --> []. seqq([Es|Ess]) --> seq(Es), seqq(Ess). + +% Describes an arbitrary number of elements +... --> [] | [_], ... . -- 2.54.0