编译原理 怎么求FOLLOW啊.Grammar:E -> TE'E' -> +TE'|εT -> FT'T' -> *FT'|εF -> (E)|idFIRST我知道怎么求,但FOLLOW该怎么求.书上写得太抽象了,比如求FOLLOW(T) 和 FOLLOW(F)
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/20 03:10:56
编译原理 怎么求FOLLOW啊.Grammar:E -> TE'E' -> +TE'|εT -> FT'T' -> *FT'|εF -> (E)|idFIRST我知道怎么求,但FOLLOW该怎么求.书上写得太抽象了,比如求FOLLOW(T) 和 FOLLOW(F)
编译原理 怎么求FOLLOW啊.
Grammar:
E -> TE'
E' -> +TE'|ε
T -> FT'
T' -> *FT'|ε
F -> (E)|id
FIRST我知道怎么求,但FOLLOW该怎么求.书上写得太抽象了,比如求FOLLOW(T) 和 FOLLOW(F)
编译原理 怎么求FOLLOW啊.Grammar:E -> TE'E' -> +TE'|εT -> FT'T' -> *FT'|εF -> (E)|idFIRST我知道怎么求,但FOLLOW该怎么求.书上写得太抽象了,比如求FOLLOW(T) 和 FOLLOW(F)
只要follow额,这样,follow(E),把所有包含你要求的符号的产生式都找出来,有F -> (E)|id,那E后面就是),其他包含E的都没有,所以follow(E)={),#},E‘,包含E’的产生式有E -> TE',再由F -> (E)|id推出F -> (TE‘)|id,则E’后面也有),则follow(E’)={),#};T,包含T的产生式有E -> TE'、E' -> +TE'|ε,T后面是E‘(+TE'|ε),则T有+,再根据F -> (E)|id,(TE')|id,E‘又可以是空(ε),则T后面有),则follow(T)={+,),#}. T‘同理,包含T’的有T -> FT'、T' -> *FT'|ε,F -> (E)|id,推出F -> (TE‘)|id,再推出F -> (FT'E')|id,E'可以推出ε,则T'后面有),由E -> TE'推出E -> FT‘E',则T’后面是E‘,E' -> +TE'|ε,则follw(T’)含有+,所以follow(T‘)={+,),#}.
F嘛,自己推推,都是这样做得