]> Repositorios git - scryer-prolog.git/commitdiff
rely on the built-in DCG expansion, per discussion in #1577
authorMarkus Triska <[email protected]>
Sun, 21 Aug 2022 16:59:36 +0000 (18:59 +0200)
committerMark Thom <[email protected]>
Thu, 27 Oct 2022 05:36:07 +0000 (23:36 -0600)
src/lib/dcgs.pl

index ae996cf0821bd5ae138afda6576b22fd7725f1ab..77eb2f5e911c9b9a40d94b4590c9e5c4aa152464 100644 (file)
@@ -132,29 +132,25 @@ user:term_expansion(Term0, Term) :-
     dcg_rule(Term0, Term).
 
 % Describes a sequence
-seq(Xs) -->
-   call(det_end_(Xs)),
-   !.
-seq([]) --> [].
-seq([E|Es]) --> [E], seq(Es).
-
-det_end_(Xs, Cs0,Cs) :-
+seq(Xs, Cs0,Cs) :-
    var(Xs),
    Cs0 == [],
+   !,
    Xs = [],
    Cs0 = Cs.
+seq([]) --> [].
+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
-... --> call(det_end), !.
-... --> [] | [_], ... .
-
-det_end(Cs0,Cs) :-
+...(Cs0,Cs) :-
    Cs0 == [],
+   !,
    Cs0 = Cs.
+... --> [] | [_], ... .
 
 error_goal(error(E, must_be/2), error(E, must_be/2)).
 error_goal(error(E, (=..)/2), error(E, (=..)/2)).