1、First 集合的求法: First 集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的 First集合,由于终结符的 First 集合就是它自己,所以求出非终结符的 First 集合后,就可很直观地得到每个字符串的 First 集合。1. 直接收取:对形如 Ua的产生式(其中 a 是终结符) ,把 a 收入到 First(U)中2. 反复传送:对形入 UP的产生式(其中 P 是非终结符) ,应把 First(P)中的全部内容传送到 First(U)中。Follow 集合的求法: Follow 集合是针对非终结符而言的,Follow(U)所表达的是句型中非终结符 U 所有可能的后随
2、终结符号的集合,特别地, “#”是识别符号的后随符。1. 直接收取:注意产生式右部的每一个形如“Ua”的组合,把 a 直接收入到Follow(U)中。2直接收取:对形如“UP”(P 是非终结符)的组合,把 First(P)除 直接收入到Follow(U)中。3反复传送:对形如 PU 的产生式(其中 U 是非终结符) ,应把 Follow(P)中的全部内容传送到 Follow(U)中。(或 PUB 且 First(B)包含 ,则把 First(B)除 直接收入到 Follow(U)中,并把 Follow(P)中的全部内容传送到 Follow(U)中)例 1:判断该文法是不是 LL(1)文法,说明
3、理由 SABc Aa| Bb|? First 集合求法就是:能由非终结符号推出的所有的开头符号或可能的 ,但要求这个开头符号是终结符号。如此题 A 可以推导出 a 和 ,所以 FIRST(A)=a, ;同理FIRST(B)=b,;S 可以推导出 aBc,还可以推导出 bc,还可以推导出 c,所以FIRST(S)=a,b,c 。 Follow 集合的求法是:紧跟随其后面的终结符号或。但文法的识别符号包含,在求的时候还要考虑到 。具体做法是把所有包含你要求的符号的产生式都找出来,再看哪个有用。 Follow(S)= 如求 A 的,产生式:SABc Aa| ,但只有 SABc 有用。跟随在 A 后年的终结符号是 FIRST(B)=b, ,当 FIRST(B)的元素为 时,跟随在 A 后的符号就是 c,所以 Follow(A)=b,c 同理 Follow(B)=c 。