这类题型也经常在考试中出现,一般是与判断是否为LL(1)文法放在一起进行考察。这类题目该怎么去做呢?
(1)求出每个非终结符的FIRST集和FOLLOW集。(在上一篇文章中已经详细介绍)
(2)构造预测分析表:横坐标是所有的非终结符,纵坐标是所有的终结符。
(3)使用推导式填表
具体规则:以对文法G的每个推导式A->α执行步骤为例
(1)对每个α ∈FIRST(α),把A->α加入到M[A,a]
(2)若ε∈FIRST(α),则对任何b∈FOLLOW(A),把A->ε加至M[A,b]中
举个例子吧
有的同学这时候就要说了,这只有做题的方法,那这个预测分析表到底是一个什么东西呢?
下面用预测分析程序,栈和预测分析表对输入串 i+i*i#进行分析,栈的变化在下图中给出。
希望能对同学们的学习有所帮助。