编译原理---(预测分析first,follow)
2015-06-14 13:07
417 查看
E --> TE' E' --> +TE'|ε T --> FT' T ' --> *FT'|ε F --> ( E ) | id 1) first(F)={ (, id }因为F的两个产生式以"(""id"开头 2) first(E)=first(T)=first(F)={ (, id }因为E的产生式为TE',故first(E)=first(T) 3) first(E')={ +,ε }因为E'的产生式体以+开头,和ε开头 4) first(T)=first(F)={ (, id }因为T只有一个产生式,而该产生式的体以F开头,又因为F不能推倒出ε,所以first(T)与first(F)必然相同. 5) first(T')={ *, ε }因为T'的产生体以"*" 和 "ε"开头 6) follow(E) = { ), $}.因为F --> ( E ) | id 在E 的右边是 “)’,又因为E为开始符号,所以后面一定是”$” 7) Follow(E’) = { ), $ }因为follow(E’)等于follow(E),因为产生式E --> TE' 8) Follow(T) = { +, ), $} 因为产生式E --> TE'推导出T的后面是E’,first(E’)={+,ε},所以follow(T)==follow(E’)除了ε 9) Follow(T’) = Follow(T) = { +, ), $ } 因为T’只出现在T的产生式的尾部,因此必然有follow(T’)==follow(T) 10) Follow(F) = { *, +, ), $ }因为产生式T --> FT',说明first(T’)={*,ε},这个因为存在ε所以follow(F)==follow(T’)
相关文章推荐
- Shallow heap & Retained heap
- “好程序员训练营”——JavaScript笔记
- 某个偏锥面跟平面的交线
- 关于android-common开源框架的使用
- Cannot run program "/home/mohemi/Program/adt-bundle-linux-x86_64-20130729/sdk//tools/emulator": erro
- Centos 5.5 NTP服务器配置
- Appcan跨域交互
- Appcan跨域交互
- 【CSS】纯CSS实现三级导航(模板)
- linux及安全课程总结
- Leetcode 38 Count and Say
- html5学习 - canvas画图和清除图片
- Java并发编程-05-使用ThreadFactory创建新线程
- Uva - 1598 - Exchange
- Uva - 1598 - Exchange
- 二分查找
- 【Leetcode】Partition List
- 电脑投屏到小米盒子
- Web应用基础
- PHP利用P3P协议实现跨域