已知文法G[S]:S→A B|PQx, A→xy ,B→bc ,P→d P|ε ,Q→aQ|ε 该文法是LL(1)文法

《编译原理》构造 LL(1) 分析表的步骤 - 例题解析

4、各集合对对应的对象以及含义

右部内部的所有终结符集可能为 ε
是對产生式左部(非终结符) 非终结符后面紧跟的终结符,可能为 #和该非终结符推导出的右部无关(因为LL(1)文法不包含递归,所以右部不会洅有该非终结符所以不能通过该右部判断该非终结符后跟集合)
需要考虑产生式右部的不同情况,进一步确定是根据 FIRST 集还是 FOLLOW 集
  • 解题时先判断是否为 ε,是则用第(3)条,否则再判断能否通过1次或多次推出 ε,是则用第(2)条否则用第(1)条

分析表是一个二维数组 M[A,a]其中 A 表示行,是非终结符a 表式列是终结符或 #。

  • M[Aa] 中若有产生式,表明 A 可用该产生式推导以求与输入符号 a 匹配。
  • M[Aa] 中若为空,表明 A 不可能推导出与 a 匹配的字符串

7、LL(1) 分析表构造方法:

  • 把所有无定义的 M[A, a] 标上“出错标志”为了使表简化,表中空白处为出错

证明文法是 LL(1) 文法(2 分)

定理:同一非终结符的 SELECT 交集为空集则该文法是 LL(1) 文法:

所以该文法是 LL(1) 文法

分析表是一个二维数组 M[A,a]其中 A 表示行是非终结符,a 表式列是终结符或 #根据 SELECT 集构造分析表:

我要回帖

更多关于 BⅠ0S 的文章

 

随机推荐