1-构建LL分析表

定义

对于一个文法G的每一个产生式A->a,进行如下处理:

  1. 对于FIRST(A)中的每一个终结符号m,将A->a添加到[A,m]。

  2. 如果e在FIRST(A)中,那么对于FOLLOW(A)中的每一个终结符b,将A->a添加到M[A,b]中,如果e在FIRST(a)中,且$在FOLLOW(A)中,也将A->a加入M[A,$]。

通俗一点来讲,就是建立一个通道,即是两个终结符之间通过什么可以完成可达性。

实例

image.png

image.png

特殊的

一个文法的预测分析表有没有多重定义的条目,当且仅当该文法是LL(1)的

如果文法G是左递归或二义的,则M至少含一个多重定义的条目

案例

image.png

image.png

id + id * id $ 的推导过程 (初始情况)

已匹配 输入
E $ id + id * id $
TE’ $ id + id * id $
FT’E’$ id + id * id $
idT’E’$ id + id * id $
id T’E’$ + id * id $
id E’$ + id * id $
id +TE’$ + id * id $
id + TE’$ id * id $
id + FT’ E’$ id * id $
id+ id T’ E’ $ id * id $
id + id T’ E’ $ * id $
id + id * FT’E’$ * id $
id + id * FT’E’$ id $
id + id * idT’E’$ id$
id + id * id T’E’$ $
id + id * id E’$ $
id + id * id $ $