Как включить двойные кавычки в аргумент командной строки SWI-PL? - PullRequest
1 голос
/ 22 февраля 2020

Учитывая код a2.pl:

%% prolog (swipl) command line arguments
%% swipl -s a2.pl -t a --quiet -- "b" "c" "D"
%% which outputs to screen: ['D']

writeln1(Term) :-
    term_to_atom(Term,Atom),
    writeln(Atom),!.

a:-
current_prolog_flag(argv, AllArgs),
AllArgs=[_,_ | Args],
writeln1(Args),halt.

Как мне сделать мой запрос swipl -s a2.pl -t a --quiet "b" "c" "[[v,b],":-",[[[n,=]]]]", который возвращает

['[[v,b],:-,[[[n,=]]]]']

return

[[v,b],":-",[[[n,=]]]]

?

1 Ответ

2 голосов
/ 22 февраля 2020

Я обнаружил, что следующий метод можно использовать для обработки термина, преобразования его в список, вызова предиката a2.pl, а затем преобразования его обратно в термин.

%% term_to_atom([[v,b],":-",[[[n,=]]]],B).
%% B = '[[v,b],":-",[[[n,=]]]]'.

%% ?- string_atom(A,'[[v,b],":-",[[[n,=]]]]').
%% A = "[[v,b],\":-\",[[[n,=]]]]".

%% swipl -s a2.pl -t a --quiet "b" "c" "[[v,b],\":-\",[[[n,=]]]]"
%% ['[[v,b],":-",[[[n,=]]]]']

%% ?- term_to_atom(A,'[[v,b],":-",[[[n,=]]]]').
%% A = [[v, b], ":-", [[[n, =]]]].
...