预测分析表【LL(1)分析表】的构造

预测分析表【LL(1)分析表】的构造


算法:

对于G中的每一个产生式, A -> α ,执行以下2步:

1.for  ∀ a ∈ FIRST(α), 将 A -> α 填入 M [A, a ];

1. if(ε ∈ FIRST(α))

         ∀ a ∈ FOLLOW (A) , 将 A -> ε 填入 M [A, a ];

PS: 这里的 a 包括 # 


例子:

文法:

E -> TE'

E' -> +TE' | ε

T -> FT'

T' -> *FT' | ε

F -> (E) | id


解析:

1.E -> TE' 

FIRST(TE')={(,id}     所以 E -> TE'   填入  M[E, id] 和 M[ E, ( ] 

步骤2不满足

2.E' -> +TE'

FIRST(+TE')={+}     所以 E' -> +TE'  填入  M[E', +]
步骤2不满足

3.E' -> ε

FOLLOW(E')={ ), # }   所以 E' -> ε 填入 M[E', )]   和 M[E', #]

步骤1不满足

4.T -> FT'

FIRST(FT')={(,id}    所以T -> FT' 填入 M[T, (]    和 M[T, id]
步骤2不满足

5.T' -> *FT'

FIRST(*FT')={*}     所以 T' -> *FT' 填入 M[T' , * ]

步骤2不满足

6. T' -> ε

FOLLOW(T')={ +, ), # }   所以 T' -> ε  填入M[T', +]、M[T', )]M[T', #]

步骤1不满足

7.F -> (E)

FIRST((E))={(}   所以F -> (E) 填入  M[F, (]

步骤2不满足

8.F ->  id

FIRST(id)={id}   所以 F ->  id 填入 M[F,   id]

步骤2不满足


结果如下:

语法变量

输入符号

id

+

*

(

)

#

E

E -> TE'  E -> TE'  

E’

 E' -> +TE'  E' -> ε
E' -> ε

T

T -> FT'   T -> FT' 

T’

 T' -> εT' -> *FT' T' -> εT' -> ε

F

F ->  id  F -> (E)  

  • 29
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值