您的位置:首页 > 其它

编译原理---(预测分析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’)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: