0

그래서이 언어는 L={a^i b^2j+1/i<>j}이고 문맥을 기반으로 문법을 생성해야합니다. 문법을 기반으로 문법을 생성해야합니다. 그 단계를 설명하는 데 나를 도울 수 있습니까?문맥 자유 문법의 생성

지금까지 나는이 있습니다

S-->aS/aBbb 
    B-->bB/b/e(empty) 

을하지만 난 그게 맞다면, 내가 그것을 이해하는 데 도움이 바랍니다 모르겠습니다.

+0

당신의 문법은 i == j == 1이고 제약 조건 (S-> aBbb, B-> b) –

+0

을 위반하는 'abbb'를 허용합니다. 그래서 그 언어의 정확한 문법은 무엇입니까? – southpaw93

답변

2

"같지 않음"제한이있는 언어의 경우 가장 쉬운 방법은 일반적으로 "동등한"제한이있는 언어에 해당하는 문법을 먼저 찾은 다음 더 많은 것을 요구하도록 변경하는 것입니다 .

이 경우에는 a 개의 토큰이 있고 그 뒤에 홀수 인 b 토큰이 있습니다. 여기서 제약 조건은 각각의 수에 대한 것입니다. 동등한 경우에 해당되는 것은 단지

S → aSbb | b

하나의 b과 같은 번호의 a 및 그 둘레에 포장 된 b의 쌍.

우리가 추가 a의 또는 B의 여분의 쌍 중 하나만 추가해야합니다, 그것은 같지 않음 만들려면 : 'AS

S →을 | S'B
S '→ aS'bb | b
A → Aa | a
B → Bbb | bb