3

를 사용하여 (1)이 LL에없는 것을 증명하고 싶은 LL에없는 왼쪽 재귀 grammarm, 첫 번째 찾아 내가 왼쪽 재귀를 제거 얻은 세트를 따라 :(1) 나는 문법을 파싱 테이블

S->AS' 
S'->AS'|Empty 
A->a 

first of A={a}  follow of S={$} 
first of s'={a,ε} follow of S'={$} 
first of S={a}  follow of A={a,$} 

을하지만 파싱 테이블에 채워 때, 나는이 개 항목과 셀을하지 않았다. 그러면 주어진 문법이 LL (1)에 없다는 것을 증명하는 방법은 무엇입니까?

+0

문법이 모호하면 (적어도 하나의 문장에 둘 이상의 구문 분석 트리가 있음) 문법은 LL (1)에 없습니다. 이제 파싱 테이블을 어떻게 나타내야합니까? –

+0

왼쪽 재귀 문법을 알고, 모호한 문법은 ll (1) 언어를 제공하지 않습니다. 그러나이 구문 분석 테이블을 사용하여 표시해야합니다 ... 어떻게? – rajkumar

+0

(A) = {S '의 첫 번째} = {a, 엡실론을 S로 대체하면 나는 S와 S'의 후행을 써야한다.} {a, $}는 내가 틀린 곳을 제안 해주세요. – rajkumar

답변

1

우선, 왼쪽 재귀를 제거한 문법보다 먼저 및 다음을 찾습니다. 따라서 LL (1) 구문 분석 테이블을 만들려고하면 왼쪽 재귀가 제거되고 문법이 명확하므로 2 개의 항목이 없어야합니다.

왼쪽 재귀가 있으므로 문법 [S-> SA | A A-> a]은 LL (1)이 아닙니다. LL (1) 구문 분석 테이블을 작성하여이를 증명하려면이 문법을 수정하지 않고 FIRST 및 FOLLOW를 찾아야합니다. 바닥 A-에서

시작>은 먼저 (A) = {A}

S-> A, 범 FIRST (S) = FIRST (A) = {A}

S-을 준다 > SA, FIRST (S) = FIRST (S)를 주면 문제가 발생한다고 생각합니다. 이러한 재귀 호출 규칙에서 FIRST (S)를 계산할 때까지 요소가 추가 될 때까지 FIRST (S)를 계산합니다. 변경이 중지되면 대답을

따라서 FIRST (S) = FIRST (S) = {a}, 당신은 가능한 한 여러 번 변경하지 않을 것입니다. 파싱 테이블 :

따라서 두 가지 항목이
 a 
------------ 
S S->SA 
    S->A 
------------- 
A A->a 

(S가, a). 따라서 LL (1)