]> Repositorios git - scryer-prolog.git/commitdiff
ADDED: ... //0, describing an arbitrary number of elements
authorMarkus Triska <[email protected]>
Sat, 3 Jul 2021 07:54:01 +0000 (09:54 +0200)
committerMarkus Triska <[email protected]>
Sat, 3 Jul 2021 07:54:01 +0000 (09:54 +0200)
This is a very versatile nonterminal. For instance, repeated elements:

    ?- phrase((...,[E],...,[E],...), "hello!!").
    %@    E = l
    %@ ;  E = !
    %@ ;  false.

src/lib/dcgs.pl

index e1751d8c852cb8bbbb81a2b50c8dcf0647e2417a..f4cee25c6ee9b1a996d237ce80322b45c594711e 100644 (file)
@@ -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
+... --> [] | [_], ... .