2017-05-01 5 views
1

확인 내가 다음과 같은 문법이것이 내 문법을 모호하게 만들 것입니까?

<Exp> -> <Term> 
<EXp> -> <Term> {<AddOp> <Exp>} 
<Term> -> <Factor> {<MultOp> <Term>} 
<Factor> -> <id> | <no> | (<Exp>) 

것은 내부 {} 선택 사항이 있다고 할 수 있습니다. 그래서 기술적으로는 용어 - 용어 또는 요소 -를 가질 수 있습니다. 이제 다음과 같은 파생어가 가능한데 10을 말할 수 있습니다. exp-> term-> factor-> no-> 10 .. 그냥 exp에 no를 추가 할 수 있습니까?

<Exp> -> <Term>|<no> 

또는이 때문에 문법이 모호하거나 다른 문제가 발생합니까? 감사.

는시 Addop 및 MultOp은 단지 +와 *

답변

0

귀하의 초기 문법이 이미 모호 2. 생산 1 문법에 아무것도 추가하지 않습니다 생산 (1)을 통해 생산을 통해, <Exp> 두 가지 방법으로 <Term> 유래 , 당신은 그것을 제거 할 수 있습니다, 그리고 당신은 동일한 언어에 대한 모호하지 않은 문법을 얻을 것입니다.

그러나 <Exp><no>을 두 가지 다른 방식으로 유도하기 때문에 생산물 <Exp> -> <no>을 추가하면 모호한 문법이 다시 나타납니다. 이미 보여준 첫 번째 방법과 두 번째 방법은 새 제작물의 사소한 응용 프로그램입니다.