1

무료 컨텍스트를 재생성 L= { a^i b^j c^k | i, j, k ≥ 0 , i = j or i = k }나는 언어를 액세스 할 명확한 문법을 ​​생성 할 필요가 문법

나는 이미 무엇을 가지고 :

S : X | Y 
X : TC 
T : aTb | ԑ 
C : cC | ԑ 
Y : aYc | F 
F : bF | ԑ 

하지만 문법이 모호, 그것은 동일한 번호를 가진 문자열을 인식 할 수 a, b, c의 두 가지 다른 방법으로 모호하지 않게하는 더 좋은 제안이 있습니까?

+0

도움이 될 것입니다 생각 만약 내가 틀렸다면 정정 해줘하지만,이 line'X : aXb | T'는'aaaabbbbccc'보다는'aaaacccbbbb' 타입의 문자열을 생성합니다. 그게 의도적 인거야? 귀하의 언어 설명에 따르면 그것은 허용되지 않습니다. – PiotrWolkowski

+0

네, 맞습니다. 나는 그 선을 고쳤지 만 문법은 아직도 모호한 문법이다. – Lucy

답변

1
S : X | Y | Z 
X : aXb | ԑ 
Y : aYc | F 
Z : Zc | X | ԑ 
F : Fb | ԑ 

위 규칙은 규칙이 적고 올바른 문자열을 생성하지만 여전히 모호합니다.

질문에서 언어 L의 문법은 다음과 같은 문자열을 생산하는 두 개의 하위 문법으로 나눌 수 있습니다 :이 두 가지의 a^i b^i c^ja^i b^j c^j 및 교차 식의 이런 종류의 발생합니다 : a^i b^i c^i. 그것은 두 문법의 교차 식의이 종류를 생산하는 경우 다음 문법은 본질적으로 모호 것을 증명 할 수 있습니다

+0

'Z'는 다른 제작물에서 참조하지 않습니까? –

+0

내 수정 사항이 수정되었습니다. 오른쪽 예제를 복사하지 않았다 – PiotrWolkowski

+0

대답 주셔서 감사하지만 문법이 여전히 Y와 Z에서 aabbcc (a, b, c의 같은 수)를 유도 할 수 있다고 생각합니다. 그것의 모호함을 여전히 의미합니다. – Lucy