什么是预测解析算法并计算以下语法的 FIRST 和 FOLLOW S → L = R S → R L →* R L → id R → L
解决方案
FIRST的计算
S→L=R
∵L不导出ε。根据FIRST规则(4b)
∴FIRST(S)={FIRST(L)}(1)
S→R
∵R不导出ε。根据FIRST规则(4b)
∴FIRST(S)={FIRST(R)}(2)
L→*R
应用FIRST规则(3)
FIRST(L)={*}(3)
L→id
应用FIRST规则(3)
FIRST(L)={id}(4)
右→左
应用FIRST规则(4b)
FIRST(R)={FIRST(L)}(5)
结合(1)到(5)语句
FIRST(L)={*,id}
FIRST(S)={FIRST(L)}
FIRST(R)={FIRST(L)}
FIRST(S)={FIRST(R)}
∴FIRST(L)=FIRST(S)=FIRST(R)={*,id}
FOLLOW的计算
S→L=R
S→R
L→∗R
L→id
右→左
应用FOLLOW的规则(1)
跟随(S)={$}(1)
S→L=R
应用FOLLOW规则(2)
∵FIRST(β)=FIRST(=R)={=}不包含ε。
∴FOLLOW的规则(2a)
∴FOLLOW(L)={=}(2)
应用FOLLOW规则(3)
∴FOLLOW(R)={FOLLOW(S)}(3)
S→R
我们不能在这个产生式上应用规则(2)作为A→