编译器构造 - 遵循一组语法
Compiler Construction - Follow set of a grammar
我有以下语法
E -> TX
X -> +E
|epsilon
T -> intY
| (E)
Y -> *T
| epsilon
下面的 Follow 集对上面的语法是否正确?
E = {$, )}
X = {$, )}
T = {int, (, $}
Y = {int, (, $}
第一
First(E) -> {int, (}
First(X) -> {+, epl}
First(T) -> {int, (}
First(Y) -> {*, epl}
关注
Follow(E) -> {$, )}
Follow(X) -> {Follow(E)}
Follow(T) -> {First(X) - epl, Follow(E)} -> {+, $, )}
Follow(Y) -> {Follow(T)}
为什么在关注(T) 中关注(E)?因为 First(X) 有 epsilon
-> 这给了我们 E -> T 生产
对于以下语法:
E -> TX
X -> +E |epsilon
T -> intY| (E)
Y -> *T| epsilon
正在计算集合的第一个
FIRST(E) = FIRST(T) - epsilon U FIRST(X)
={int, (, +, epsilon }
FIRST(X) = FIRST(+E) - epsilon U epsilon
={+, epsilon}
FIRST(T) = FIRST(intY) - epsilon U FIRST( (E) )
={int, ( }
FIRST(Y) = FIRST(*T) - epsilon U epsilon
={*, epsilon}
正在计算FOLLOW集合
Follow(E) -> {$,)}
Follow(X) -> {$,)}
Follow(T) -> {+,$,)}
Follow(Y) -> {+,$,)}
我有以下语法
E -> TX
X -> +E
|epsilon
T -> intY
| (E)
Y -> *T
| epsilon
下面的 Follow 集对上面的语法是否正确?
E = {$, )}
X = {$, )}
T = {int, (, $}
Y = {int, (, $}
第一
First(E) -> {int, (}
First(X) -> {+, epl}
First(T) -> {int, (}
First(Y) -> {*, epl}
关注
Follow(E) -> {$, )}
Follow(X) -> {Follow(E)}
Follow(T) -> {First(X) - epl, Follow(E)} -> {+, $, )}
Follow(Y) -> {Follow(T)}
为什么在关注(T) 中关注(E)?因为 First(X) 有 epsilon -> 这给了我们 E -> T 生产
对于以下语法:
E -> TX
X -> +E |epsilon
T -> intY| (E)
Y -> *T| epsilon
正在计算集合的第一个
FIRST(E) = FIRST(T) - epsilon U FIRST(X)
={int, (, +, epsilon }
FIRST(X) = FIRST(+E) - epsilon U epsilon
={+, epsilon}
FIRST(T) = FIRST(intY) - epsilon U FIRST( (E) )
={int, ( }
FIRST(Y) = FIRST(*T) - epsilon U epsilon
={*, epsilon}
正在计算FOLLOW集合
Follow(E) -> {$,)}
Follow(X) -> {$,)}
Follow(T) -> {+,$,)}
Follow(Y) -> {+,$,)}