From b41563e976eda4e555c8b0fb3924a174d8143517 Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Sat, 7 Mar 2026 09:37:30 +0100 Subject: [PATCH] ENHANCED: support quads in included files Suggested by @dcnorris, many thanks! https://github.com/mthom/scryer-prolog/issues/634#issuecomment-4003451420 --- src/toplevel.pl | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/src/toplevel.pl b/src/toplevel.pl index 9c0ad643..465c37c0 100644 --- a/src/toplevel.pl +++ b/src/toplevel.pl @@ -251,11 +251,40 @@ gather_clauses_(Stream, File, Clauses) :- ( Error = error(syntax_error(incomplete_reduction),_), at_end_of_stream(Stream) -> true - ; format("~s: ~q", [File,Error]) + ; format("~s: ~q~n", [File,Error]) )), ( Continue == true -> - Clauses = [Clause|Rest], - gather_clauses_(Stream, File, Rest) + ( var(Clause) -> + format("~s: variable clause is ignored.~n", [File]), + gather_clauses_(Stream, File, Clauses) + ; Clause = (?- _Query) -> + devour_answer_descriptions(Stream, File, Clauses) + ; Clauses = [Clause|Rest], + gather_clauses_(Stream, File, Rest) + ) + ; Clauses = [] + ). + + +devour_answer_descriptions(Stream, File, Clauses) :- + catch((read(Stream, Clause), + Continue = true), + Error, + ( Error = error(syntax_error(incomplete_reduction),_), + at_end_of_stream(Stream) -> + true + ; format("~s: ~q~n", [File,Error]) + )), + ( Continue == true -> + ( var(Clause) -> + format("~s: variable clause is ignored.~n", [File]) + ; Clause = (?- _Query) -> + devour_answer_descriptions(Stream, File, Clauses) + ; loader:answer_description(Clause) -> + devour_answer_descriptions(Stream, File, Clauses) + ; Clauses = [Clause|Rest], + gather_clauses_(Stream, File, Rest) + ) ; Clauses = [] ). -- 2.54.0