2017-03-08 5 views
-1

E -> T의 의미는 무엇입니까? 변수 E은 변수 T을 의미합니까?프롤로그 - DCG 변환

연결되어이 코드 :

e(TS,R) :- t(TS,R). 

감사를 도와

+1

의 별칭입니다 * * 연결되어이 코드. 여기서 "링크 된"의미는 무엇입니까? 'E -> T '라는 용어에서'(->)/2'는 정확하게 "함축"을 의미하지는 않지만'E'와'T'의 결과에 따라 Prolog에서 특정한 행동을합니다. 'E'가 실패하면'E-> T'가 실패합니다. 'E -> T'는 실패하고'E'가 성공하고'T'가 실패하면'E'로 되돌아 가지 않습니다 ('E',''E''가 반대로''T''가 실패하면 ,'E'로 역 추적). 'E -> T'는'E'와'T'가 성공하면 성공합니다. 'E -> T'는'E,!, T'처럼 행동합니다. – lurker

+2

정말'e -> t '입니까? 그리고 염두에 두십시오. Prolog에서 중요합니다. 그리고'->'와'->'에는 큰 차이가 있습니다. – lurker

답변

4

당신은 당신이 대략 E -> T (T 다음 E 경우)를 묻는 확인하지에 대한 e --> t (소문자 (감사 럴커인가 !) 및 DCG 구문, 여기서 "DCG"는 "한정 구문절 문법"입니다.

DCG 구문

e --> t. 

가 말을 더 일반적으로

e(L1, L2) :- t(L1, L2). 

의 별칭 (또는 바로 가기 또는 문법 설탕, 원하는 경우)이기 때문에

은 DCG 구문은 인수의 몇 가지를 추가 관련된 절의 끝에 :- 연산자의 오른쪽에 체인을 만듭니다. 여기서 체인의 시작과 끝은 왼쪽에 추가 된 인수입니다.

그래서 (예에 의한)

d --> c1, c2, ...., cn. 

난 당신이 말할 때 당신이 무슨 뜻인지 모르겠어요

d(L1, Lnp1) :- c1(L1, L2), c2(L2, L3), ..., cn(Ln, Lnp1). 
+0

@lurker - D' oh! 소문자, 네 말이 맞아. 답변이 수정되었습니다. 감사. – max66

+0

@WillNess - corrected; 감사. – max66