如何构造LL(1)文法预测分析表

这类题型也经常在考试中出现,一般是与判断是否为LL(1)文法放在一起进行考察。这类题目该怎么去做呢?

(1)求出每个非终结符的FIRST集和FOLLOW集。(在上一篇文章中已经详细介绍)

(2)构造预测分析表:横坐标是所有的非终结符,纵坐标是所有的终结符。

(3)使用推导式填表

具体规则:以对文法G的每个推导式A->α执行步骤为例

(1)对每个α FIRST(α),把A->α加入到M[A,a]

(2)若εFIRST(α),则对任何bFOLLOW(A),把A->ε加至M[A,b]中

举个例子吧

如何构造LL(1)文法预测分析表_第1张图片

有的同学这时候就要说了,这只有做题的方法,那这个预测分析表到底是一个什么东西呢?

下面用预测分析程序,栈和预测分析表对输入串 i+i*i#进行分析,栈的变化在下图中给出。

如何构造LL(1)文法预测分析表_第2张图片

希望能对同学们的学习有所帮助。

你可能感兴趣的:(编译原理,编辑器)