0
프롤로그에서 문자열에서 대괄호를 제거하는 방법. {} 대괄호 만 있고 중첩 된 대괄호가있을 수 있습니다.프롤로그는 문자열에서 대괄호를 제거합니다.
I 대답 문자열 것이다{1+ {2} +3} B {4} 다음
c를 문자열이있는 경우, 예를 들면
abc
프롤로그에서 문자열에서 대괄호를 제거하는 방법. {} 대괄호 만 있고 중첩 된 대괄호가있을 수 있습니다.프롤로그는 문자열에서 대괄호를 제거합니다.
I 대답 문자열 것이다{1+ {2} +3} B {4} 다음
c를 문자열이있는 경우, 예를 들면
abc
dcg 표기법. 당신의 초기화 파일에서
:- set_prolog_flag(double_quotes, chars).
이 문자로보다 편리하게 작업 할 수 :다음
는 설정을 가지고 있다고 가정합니다. 예를 들어:
no_braces([]) --> []. no_braces([C|Cs]) --> [C], { dif(C, '{') }, no_braces(Cs). no_braces(Cs) --> ['{'], no_braces(_), ['}'], no_braces(Cs).샘플 질의와 답변 : 우리는 또한 매우 일반적인 쿼리를 게시 할 수 있습니다
?- phrase(no_braces(Ls), "abc"). Ls = [a, b, c] ; false. ?- phrase(no_braces(Ls), "a{b}c"). Ls = [a, c] ; false.및 여전히 얻을 답변 : 지난
?- length(Ls0, _), phrase(no_braces(Ls), Ls0). Ls0 = Ls, Ls = [] ; Ls0 = Ls, Ls = [_2308], dif(_2308, '{') ; Ls0 = Ls, Ls = [_2474, _2480], dif(_2474, '{'), dif(_2480, '{') ; Ls0 = ['{', '}'], Ls = [] ; Ls0 = Ls, Ls = [_2640, _2646, _2652], dif(_2640, '{'), dif(_2646, '{'), dif(_2652, '{') ., 귀하의 예 :
?- phrase(no_braces(Ls), "a{1+{2}+3}b{4}c"). Ls = [a, b, c] ; false.