2010-04-28 2 views
0

현재 다음 문법에서 LR (1) 상태를 생성 중입니다. LR (1) 구문 분석을위한 상태를 구성 할 때 무한 루프 처리

S->AS 
S->c 
A->aA 
A->b 

where A,S are nonterminals and a,b,c are terminals. 

는 I0

I0: S' -> .S, epsilon 
    --------------- 
    S -> .AS, epsilon 
    S -> .c, epsilon 
    --------------- 
    S -> .AS, a 
    S -> .c, c 
    A -> .aA, a 
    A -> .b, b 

그리고 I1의 건설이다.

From S, I1: S' -> S., epsilon //DONE 

등등. 하지만

From a, I4: A -> a.A, a 
     ----------- 
     A -> .aA, a 
     A -> .b, b 

문제는 ... I4 구축에 도착하면 A -> .aA

난에서 다음 상태를 구성하려고

, 나는 다시 한 번 얻을거야 I4의 내용과 완전히 동일하며, 이것은 무한히 계속됩니다. 비슷한 루프가 발생합니다

S -> .AS 

그럼 내가 뭘 잘못하고있는거야? 제가 잃어버린 일부 세부 사항이 있어야하지만, 내 메모와 내 책을 찾아 본 중 하나를 찾을 수 없거나 단지 여기에 무엇이 잘못되었는지 이해하지 못합니다. 어떤 도움이 필요합니까?

답변

0

나는 대답을 알아 냈다고 확신한다. 당연히 상태는 서로를 가리킬 수 있으므로 콘텐츠가 이미 존재하면 새 상태를 만들 필요가 없습니다. 그래도 누군가가 이것을 확인할 수 있다면 나는 그것을 좋아할 것이다.