print errors with line numbers in GNU style

This commit is contained in:
Mark Thom
2019-10-04 15:32:26 -06:00
parent caeff99f69
commit d4f9d18149
7 changed files with 131 additions and 83 deletions

View File

@@ -1,10 +1,11 @@
:- module(terms, [numbervars/3]).
:- use_module(library(error)).
numbervars(Term, N0, N) :-
catch(internal_numbervars(Term, N0, N), error(E,Ctx),
( ( var(Ctx) -> Ctx = numbervars/3 ; true ), throw(error(E,Ctx) ) ) ).
catch(internal_numbervars(Term, N0, N),
error(E,Ctx),
( ( var(Ctx) -> Ctx = numbervars/3 ; true ), throw(error(E,Ctx) ) ) ).
internal_numbervars(Term, N0, N) :-
must_be(integer, N0),
@@ -12,7 +13,7 @@ internal_numbervars(Term, N0, N) :-
term_variables(Term, Vars),
numberlist(Vars, N0, N).
numberlist([], N,N).
numberlist(['$VAR'(N0)|Vars], N0,N) :-
numberlist([], N, N).
numberlist(['$VAR'(N0)|Vars], N0, N) :-
N1 is N0+1,
numberlist(Vars, N1,N).
numberlist(Vars, N1, N).