From 92d86421332b7d1fed92e748f887103599f7ca8b Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Sat, 11 Apr 2020 21:52:45 -0600 Subject: [PATCH] do not accept [X|Xs] patterns as DCG non-terminals (#286) --- src/prolog/lib/dcgs.pl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/prolog/lib/dcgs.pl b/src/prolog/lib/dcgs.pl index e8e18844..bd35575d 100644 --- a/src/prolog/lib/dcgs.pl +++ b/src/prolog/lib/dcgs.pl @@ -107,7 +107,8 @@ dcg_constr((_->_)). % 7.14.12 - if-then (existence implementation dep.) % The principal functor of the first argument indicates % the construct to be expanded. dcg_cbody([], S0, S, S0 = S). -dcg_cbody([T|Ts], S0, S, lists:append([T|Ts], S, S0)). +dcg_cbody([T|Ts], S0, S, Goal) :- + dcg_terminals([T|Ts], S0, S, Goal). dcg_cbody(( GRFirst, GRSecond ), S0, S, ( First, Second )) :- dcg_body(GRFirst, S0, S1, First), dcg_body(GRSecond, S1, S, Second). -- 2.54.0