Разбор - сверху вниз / первый и последующий - PullRequest
0 голосов
/ 30 января 2012

У меня есть этот грамматик, где я пытаюсь найти наборы First и Follow.Я не уверен, что делаю все правильно, потому что мои наборы подписок никогда не включают в себя первый из R

Грамматика

E --> TP
P --> +TP | ε
T --> FQ
Q --> FQ | ε
F --> (E)R | iR
R --> *R | ε

Первые наборы -

First(E) = First(T) = First(F) = { (, i }
First(P) = { +, ε }
First(Q) = First(F) = { (, i }   // not needed i dont think
First(R) = { *, ε }

Следующие наборы-

Follow(E) = { $, ) }
Follow(P) = Follow(E) = { $, ) }
Follow(T) = First(P) -{ε} + Follow(E) = {+, $, ) }
Follow(Q) = Follow(T) = { +, $, ) }
Follow(F) = First(Q)-{ε} + Follow(T) + First(F) = { +, (, ) , $, i }
Follow(R) = Follow(F) = { +, (, ) , $, i }

Я никогда не доберусь до первого (R) в следующем наборе, поэтому я не уверен, что думать.Тем не менее, я не думаю, что это возможно.Я прав с моими первыми и последующими сетами или мое понимание несколько неверно?

1 Ответ

0 голосов
/ 30 января 2012

Так как R не начинает производство, First (R) не вступит в игру (кроме случаев, когда / когда вы начинаете с R).Так что вы НЕ ДОЛЖНЫ достигать этого ни от чего другого.

...