
1-构建LL分析表
pridelizihao定义
对于一个文法G的每一个产生式A->a,进行如下处理:
对于FIRST(A)中的每一个终结符号m,将A->a添加到[A,m]。
如果e在FIRST(A)中,那么对于FOLLOW(A)中的每一个终结符b,将A->a添加到M[A,b]中,如果e在FIRST(a)中,且$在FOLLOW(A)中,也将A->a加入M[A,$]。
通俗一点来讲,就是建立一个通道,即是两个终结符之间通过什么可以完成可达性。
实例
特殊的
一个文法的预测分析表有没有多重定义的条目,当且仅当该文法是LL(1)的
如果文法G是左递归或二义的,则M至少含一个多重定义的条目
案例
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 | $ | $ |
评论
匿名评论隐私政策