语法:
E -> TE’
E’ -> +TE’ | ε
T -> FΤ’
Τ’ -> *FΤ’ | ε
F -> (E)| id
功能:
1. FIRST(F) = FIRST(T) = FIRST(E) = {(, id}
2. FIRST(E’) = {+, ε}
3. FIRST(T’) = {*, ε}
4. FOLLOW(E) = FOLLOW(E’) = {), $}
5. FOLLOW(T) = FOLLOW(T’) = {+, ), $}
6. FOLLOW(F) = {*, +, ), $}
这是我讲课的语法和功能......有人能解释我关注的工作方式???我理解FIRST是如何工作但是很难理解......
答案 0 :(得分:3)
查看Wikipedia's FIRST_and_FOLLOW_sets 。
您查找E
的任何引用。
这里(E)
并联合所有以下终端和以下非终端的第一组
这里只有以下终端)
。
F
,FT
引用了 *FT'
。因此FOLLOW(F)
是FIRST(T) = {(, id}*
和FIRST(T') = {*, ε}
的联合。
最后,FOLLOW(F) = {(, id, *, ε}
。
答案 1 :(得分:1)
这里通过这种方式找到FOLLOW(F): T - > FT'表示FOLLOW(T)是FOLLOW(F)的子集 T' - > * FT'表示FIRST(T')包含epsilon,然后除了epsilon并添加其他值以进行设置。