ENHANCED: support quads in included files

Suggested by @dcnorris, many thanks!

    https://github.com/mthom/scryer-prolog/issues/634#issuecomment-4003451420
This commit is contained in:
Markus Triska
2026-03-07 09:37:30 +01:00
parent 8f39bee463
commit b41563e976

View File

@@ -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 = []
).