编译器-LL(1)-First集与Follow集

First(A) 为A的开始符或者首符号集

Follow(A) 指的是在某些句型中紧跟在A右边的终结符号的集合

求下列右递归语法的First集和Follow集

第一行:Expr → Term Expr '

第二行:Expr ' → + Term Expr ' | - Term Expr ' | ∈

第三行:Term → Factor  Term '

第四行:Term ' → * Factor Term ' | / Factor Term ' | ∈

第五行:Factor → ident | num | ( Expr )

First(Factor) = { ident num ( } //Factor → ident | num | ( Expr ) 以什么开始显而易见
First(Term ') = { * / ∈} //同理看上面Term ‘所在语法行就好了
First(Term) = { ident num ( } //Term是Factor为首 那么Factor又以ident num ( 为首
First(Expr ') = { + - ∈ }
First(Expr) = { ident num ( }
//Expr以Term为首 Term以Factor为首 Factor又以ident num ( 为首

//Expr作为起始位置永远包含eof 同时语法最后一行Expr可以跟 )
Follow(Expr) = { eof ) }
//第一行Expr '可以作为Expr结尾 那么Expr ’包含Expr所有follow集
//第二行右边的Expr '作为Expr '结尾 Expr ‘ 包含 Expr ’自身 所以无用
Follow(Expr ') = { eof ) }
//第一行Term出现在Expr ’前面 所以Follow(Term)包含First(Expr ') 
//同时因为Expr ‘可能为∈ 那么说明Term可以作为Expr的最后出现 所以要包含Follow(Expr)
Follow(Term) = { + - eof )
//第三行可以发现Term ‘可以作为Term的最后 所以要包含Follow(Term)
//第四行右边的Term '作为Term '结尾 Term ‘ 包含 Term ’自身 所以无用
Follow(Term ')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值