From: Mark Thom Date: Sat, 22 Jan 2022 19:22:50 +0000 (-0700) Subject: lazily throw exceptions of dcg_body from goal-expanded phrase/{2,3} (#1244) X-Git-Tag: v0.9.0^2~42 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=e6c4ecfc10b60d802400d8450fb73a37a605b70f;p=scryer-prolog.git lazily throw exceptions of dcg_body from goal-expanded phrase/{2,3} (#1244) --- diff --git a/src/lib/dcgs.pl b/src/lib/dcgs.pl index 7d6dd905..488c7a92 100644 --- a/src/lib/dcgs.pl +++ b/src/lib/dcgs.pl @@ -156,6 +156,9 @@ seqq([Es|Ess]) --> seq(Es), seqq(Ess). user:goal_expansion(phrase(GRBody, S, S0), GRBody1) :- load_context(GRBody, M, GRBody0), nonvar(GRBody0), - dcg_body(GRBody0, S, S0, GRBody1, M). + catch(dcgs:dcg_body(GRBody0, S, S0, GRBody1, M), + error(E, must_be/2), + ( GRBody1 = throw(error(E, must_be/2)) ) + ). user:goal_expansion(phrase(GRBody, S), phrase(GRBody, S, [])).