2014-09-02 13 views
0

내가 알고문법 그리고 SLR에 대한 몇 가지 도전, LALR

언어는 LL이라고합니다 (1)은 LL (1) 문법에 의해 생성 될 수있는 경우. LL (1) 문법

not ambiguous and 
not left-recursive. 

을임을 나타낼 수 있지만 문제에 부딪쳤다.

왜 문법

S-> aBDb

B -> 람다

D-> dD를 | 람다

왜이 문법은 LL (1)도 SLR도 LALR하지? 누구든지 나를 묘사 할 수 있니?

+1

걱정할 필요가 없습니다. 문법은 LL (1)과 SLR (1)입니다. 누가 너 한테 말 안했어? – Gunther

+0

친애하는 @Gunther, 이것은 P.hd 입학 시험에 대한 시험입니다. 대답 키는 그렇지 않다고 말합니다. –

+0

다른 사용자는이 질문에 문법 LL (1), SLR (1) 및 LALR (1)을 만드는 오타가 있음을 제안합니다. 오타가 제거되면 문법은 LL (1), SLR (1) 또는 LALR (1)이 아닙니다. 그러나 다른 질문으로 게시하는 것이 가장 좋습니다. 그렇지 않으면 처음부터 내 대답을 완전히 다시해야하기 때문입니다. – templatetypedef

답변

0

이 문법은 실제로 LL (1)입니다. 구문 분석 표는 다음과 같습니다.

 a  b  d  $ 
S  aBDb 
B   eps eps 
D   eps dD 

SLR (1)이기도합니다. 여기

S: $ 
B: d, b 
D: b 

외에도 구성 설정은 다음과 같습니다 : 여기 FOLLOW 세트는

S' -> .S$ 
S -> .aBDb ($) 

S' -> S.$ 

S -> a.BDb ($) 
B -> .  (b, d) 

S -> aB.Db ($) 
D -> .  (b) 
D -> .dD  (b) 

D -> d.D  (b) 
D -> .dD  (b) 
D -> .  (b) 

D -> dD.  (b) 

이 있습니다 어떤 변화/감소 또는 감소/충돌을 줄이기 때문에이 문법은 SLR (1). 따라서 LALR (1)이기도합니다.

희망이 도움이됩니다.

+0

친애하는 templatetypede 님, 이메일 주소를 보내시겠습니까? –

+0

귀하의 답변이 완전히 잘못되었으므로 LALR 및 SLR이 아닙니다. – user153695

+0

@ user153695 여기에 실수를했을 수도 있지만 그게 무엇인지는 알 수 없습니다. 내가 뭘 잘못했는지 지적 해 주시겠습니까? 나는 미래의 독자들에게 도움이되는이 대답을 원합니다. – templatetypedef