编译原理LL(1)预测分析表的构造

LL(1)预测分析表的构造算法

对文法G的每个产生式A->α 执行如下步骤:
 
 
(1)对每个a∈First(α),把 A->α 加入M[A,a]
 
 
(2)若 ε∈First(α),则对任何b∈Follow(A) ,把 A-> ε加
 
 
   至M[A,b]中
 
简单理解就是
对于每一个产生式 A->a | b | c...... 求出a , b, c.....所有的first集,将其first集中对应的每一个元素加入到表格中,横坐标是产生式的非终结符,纵坐标是first集元素 即 M[A,a]
如对于以下文法:
 
S -> AaS | BbS | d
A -> a
B ->  ε | c
 
对于第一个产生式 S -> AaS | BbS | d
FIRST(AaS) = a 所以将产生式 S -> AaS 加入到 M[S,a]中
预测表的构造,横坐标是所有的非终结符,纵坐标是所有的终结符
 abcd
SS -> AaS   
A    
B    

FIRST(BbS) = { b, c } 所以讲产生式S - > BbS加入M[S, b]  M[S, c]中

 abcd
SS -> AaSS - > BbSS - > BbS 
A    
B    

 

FIRST(d) = { d } 将产生式 S -> d 加入到 M[S,d]中

 abcd
SS -> AaSS - > BbSS - > BbSS -> d
A    
B    

 

FIRST(a) = { a } 将其产生式 A -> a加入

 abcd
SS -> AaSS - > BbSS - > BbSS -> d
AA -> a   
B    

 

FIRST(c) = c 将产生式 B -> c 加入

 abcd
SS -> AaSS - > BbSS - > BbSS -> d
AA -> a   
B  B -> c 

对于产生式 B -> ε 计算FOLLOW(B)中的所有元素将其加入,计算可得 FOLLOW(B) = { b },所以讲产生式加入到M[B,b],计算得出的预测分析表如下

 

 abcd
SS -> AaSS - > BbSS - > BbSS -> d
AA -> a   
B B -> εB -> c 
  • 25
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值