From 76e33d051ceac15c6d94125daac89af8ce4e3064 Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Sun, 21 Aug 2022 18:59:36 +0200 Subject: [PATCH] rely on the built-in DCG expansion, per discussion in #1577 --- src/lib/dcgs.pl | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/lib/dcgs.pl b/src/lib/dcgs.pl index ae996cf0..77eb2f5e 100644 --- a/src/lib/dcgs.pl +++ b/src/lib/dcgs.pl @@ -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)). -- 2.54.0