From 1569cac98f22c77bf50d0f15651603ed4f45b350 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Fri, 4 Oct 2019 15:41:48 -0600 Subject: [PATCH] correct dcg handling of cuts --- Cargo.toml | 2 +- src/prolog/lib/dcgs.pl | 1 + src/prolog/lib/freeze.pl | 5 +++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 936e91ea..4ae1b846 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "scryer-prolog" -version = "0.8.100" +version = "0.8.101" authors = ["Mark Thom "] build = "build.rs" repository = "https://github.com/mthom/scryer-prolog" diff --git a/src/prolog/lib/dcgs.pl b/src/prolog/lib/dcgs.pl index 626a6b8b..9bad9df4 100644 --- a/src/prolog/lib/dcgs.pl +++ b/src/prolog/lib/dcgs.pl @@ -100,6 +100,7 @@ expand_body_term((P ; Q), (PModTerm ; QModTerm), N0, N) :- PModTerm = PModTerm0, N = N1 ). +expand_body_term(!, !, N, N) :- !. expand_body_term(CommaTerm, ModTerm, N, N) :- CommaTerm =.. [{} | BodyTerms], !, comma_ify(BodyTerms, ModTerm). diff --git a/src/prolog/lib/freeze.pl b/src/prolog/lib/freeze.pl index 4a3c05b8..96e3dda5 100644 --- a/src/prolog/lib/freeze.pl +++ b/src/prolog/lib/freeze.pl @@ -22,10 +22,11 @@ freeze(X, Goal) :- Fresh = X. gather_freeze_goals(Attrs, _) --> - { var(Attrs), ! }. + { var(Attrs) }, + !. gather_freeze_goals([frozen(X) | _], Var) --> [freeze(Var, X)], - { ! }. + !. gather_freeze_goals([_ | Attrs], Var) --> gather_freeze_goals(Attrs, Var). -- 2.54.0