5.2LL文法的判别.pptVIP

  • 7
  • 0
  • 约3.57千字
  • 约 22页
  • 2017-05-30 发布于北京
  • 举报
? LL(1)文法的判别 文法化简 - 不含有有害规则和多余规则 消除左递归和提左公因子 求出能 ε的非终结符☆ 计算FIRST集☆ 计算FOLLOW集☆ 计算SELECT集☆ (3). 求出能推出ε的非终结符 算法描述 建立一个一维数组X[ ],用以记录非终结符能否推出ε。 ① 将数组X[ ]中对应每一非终结符的标记置初值为“未定”。 …… ② 扫描文法中的产生式。 (a) 若某一非终结符的某一产生式右部为ε, 则将数组中对应该非终结符的标志置为“是”, 并从文法中删除该非终结符的所有产生式。 (b) 若某一产生式右部含有终结符,则删除该产生式。(右部含有终结符,一定无法推出ε) 若这使得以某一非终结符为左部的所有产生式都被删除,则将数组中对应该非终结符的标记值改为否。 …… ③ 扫描产生式右部的每一符号。 (此时产生式右部全部为非终结符) (a) 若扫描到的非终结符在数组中对应的标志是是,则删去该非终结符, 若这使产生式右部为空,则对产生式左部的非终结符在数组中对应的标志改“是”,并删除该非终结符为左部的所有产生式。 (b) 若扫描到的非终结符在数组中对应的标志是否,则删去该产生式, 若这使产生式左部非终结符的有关产生式都被删去,则把在数组中该非终结符对应的标志改成“否”。 …… ④ 重复③,直到扫描完一遍文法的产生式,数组中非终结符对应的特

文档评论(0)

1亿VIP精品文档

相关文档