2015-01-08 6 views
0

나는 그것을 계속 읽고 또 이해하지만, 이해할 수 없다. 옆으로 "빈 문자열"에서,교수가 말하는 것을 이해할 수 없습니다. LL (1) 구문 분석

엡실론 의미 :

http://awesomescreenshot.com/09c45nhted

몇 가지 이해 해달라고.

$ 의미

R3은 어떻게 가능합니까? 그것은 입력 스트림에 존재하지 않는 것에 갈 것 인 요인으로가는 용어를 가지고 있습니다.

두 번째 페이지의 세 번째 글 머리

모든 도움을 주셔서 감사합니다. 고맙습니다!

+3

[ask]를 읽으십시오. 지금이 문제는 SO에 적합하지 않습니다. –

+1

ε은 정확히 "전혀 아님"을 의미합니다. $는 관행에 따라 입력의 끝을 의미합니다. R3은 term-tail은 add-op 다음에 term-tail이 뒤따라 오는 term이라는 것을 말합니다. add-op는'+'또는'-' (규칙 11과 12)이므로 입력의 다음 토큰 ('+')과 일치합니다. 그리고 이것은 적절한 질문이 아닙니다. – rici

+0

@EngineerDollery는 그것을 삭제해야합니까? – mmswe

답변

2

"빈 문자열"을 제외하고 엡실론 의미는 무엇입니까?

이 ε 기호는 가장 간단한 방법으로는 아무 의미도 없습니다.

$ 의미?

$는 입력의 시작 또는 입력의 끝을 의미 할 수 있습니다. 그러나 여기에 시작 상태가 stmt 인 CFG가 있기 때문에 입력 시작으로 end of input이 $로 시작할 수 없음을 의미합니다.

어떻게 R3가 가능합니까? 그것에는 입력 스트림에 존재하지 않는 무엇인가로가는 이 될 요인으로 갈 용어가 있습니다.

초심자에게는 이런 종류의 문제가 있습니다. 그것은 정상적인 것이어야합니다. 이런 종류의 생산은 일종의 재귀 적 생산입니다. 그러나 입력을 파싱 할 때 쉽게 해결됩니다. 다음 생산 R4 인 term_tail ---> ε을 볼 수 있습니다. term_tail을 대체 할 때마다 입력이 필요하지 않을 때마다이 제작을 사용하여 해당 단계를 처리 할 수 ​​있습니다. 그래서, 당신이 생각해 왔던 것에 대한 무한 재귀가 없습니다 ...

세 번째 글 머리 기호는 두 번째 페이지입니까?

문법에서 term_tail을 따라갈 수있는 입력 문자입니다.이 문장은 두 번째 글 머리 기호 에서 언급 한 질문에 대한 대답입니다. "그렇다면 R4를 적용 할 때 어떤 입력 문자가 소비 될 수 있습니까?" 사실, term_tail 위해 파생 될 것입니다 입력 문자열은 2 가지 방법으로 수행 할 수 있습니다 -

그 글 머리 기호 포인트의 도움을 통해
EITHER term_tail ---> add_op term term_tail OR term_tail ---> ϵ 

, 저자의 실제적인 중요성을 강조하기 위해 노력하고있다 하향식 구문 분석에서 FOLLOW() 함수는입니다. 저자의 의도는 두 번째 페이지 상단에 "R4를 적용 할 수있는 입력 문자가 무엇입니까?"에서 언급 한 바와 같이 R4가 하향식 구문 분석에 적용될 수있는 조건을 평가하는 것입니다.

FOLLOW() of term_tail은 '$', ')'이됩니다. FOLLOW() 함수의 규칙을 연구 할 때 이것을 계산할 수 있습니다.

NOTE (VERY VERY-중요) -

  1. 팔로우() 우리 파생 비 종단 후에 올 수있는 단말기를 도시한다. 이것은 비 터미널에서 파생 된 마지막 터미널을 의미하지 않는다는 점에 유의하십시오. 그 다음에 올 수있는 단말기 세트입니다. 우리는 문법의 모든 비 - 터미널에 대해 FOLLOW()를 정의합니다.

  2. FOLLOW()를 어떻게 알 수 있습니까? 화살표의 오른쪽에있는 각 문구의 첫 번째 터미널을 보는 대신, 우리는 비 터미널이 화살표의 오른쪽에있는 모든 장소를 찾습니다. 그런 다음 우리는 일부 터미널을 찾습니다.