From: Markus Triska Date: Tue, 16 Nov 2021 17:31:18 +0000 (+0100) Subject: use newly available seq//1 from library(dcgs) X-Git-Tag: v0.9.0~24^2~3 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=9900762747c53d804584b66a82c5cc464e360289;p=scryer-prolog.git use newly available seq//1 from library(dcgs) I am using seq(Ls) instead of plain Ls so that DCGs can be debugged declaratively, by generalizing away nonterminals in rules. --- diff --git a/src/lib/format.pl b/src/lib/format.pl index 01fc9e00..9ef36bf4 100644 --- a/src/lib/format.pl +++ b/src/lib/format.pl @@ -128,14 +128,11 @@ format_elements([E|Es]) --> format_element(E), format_elements(Es). -format_element(chars(Cs)) --> list(Cs). +format_element(chars(Cs)) --> seq(Cs). format_element(glue(Fill,Num)) --> { length(Ls, Num), maplist(=(Fill), Ls) }, - list(Ls). - -list([]) --> []. -list([L|Ls]) --> [L], list(Ls). + seq(Ls). elements_gluevars([], N, N) --> []. elements_gluevars([E|Es], N0, N) --> @@ -192,11 +189,11 @@ cells([~|Fs0], Args0, Tab, Es, VNs) --> Delta is Num - L, length(Zs, Delta), maplist(=('0'), Zs), - phrase(("0.",list(Zs),list(Cs0)), Cs) + phrase(("0.",seq(Zs),seq(Cs0)), Cs) ; BeforeComma is L - Num, length(Bs, BeforeComma), append(Bs, Ds, Cs0), - phrase((list(Bs),".",list(Ds)), Cs) + phrase((seq(Bs),".",seq(Ds)), Cs) ) } ), cells(Fs, Args, Tab, [chars(Cs)|Es], VNs). @@ -204,7 +201,7 @@ cells([~|Fs0], Args0, Tab, Es, VNs) --> { numeric_argument(Fs0, Num, ['D'|Fs], Args0, [Arg|Args]) }, !, { number_chars(Num, NCs), - phrase(("~",list(NCs),"d"), FStr), + phrase(("~",seq(NCs),"d"), FStr), phrase(format_(FStr, [Arg]), Cs0), phrase(upto_what(Bs0, .), Cs0, Ds), reverse(Bs0, Bs1), @@ -320,7 +317,7 @@ upto_what([C|Cs], W) --> [C], !, upto_what(Cs, W). upto_what([], _) --> []. groups_of_three([A,B,C,D|Rs]) --> !, [A,B,C], ",", groups_of_three([D|Rs]). -groups_of_three(Ls) --> list(Ls). +groups_of_three(Ls) --> seq(Ls). cell(From, To, Es0) --> ( { Es0 == [] } -> [] @@ -488,7 +485,7 @@ var_name(V, Name=V, Num0, Num) :- literal(Lit, VNs) --> { write_term_to_chars(Lit, [quoted(true),variable_names(VNs)], Ls) }, - list(Ls). + seq(Ls). portray_(Var, VNs) --> { var(Var) }, !, literal(Var, VNs). portray_((Head :- Body), VNs) --> !,