编译器构造 - 遵循语法集
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译器构造 - 遵循语法集相关的知识,希望对你有一定的参考价值。
我有遵循语法
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)}
为什么跟随(E)跟随(T)?因为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}
第一(X)=第一(+ E) - epsilon U epsilon
= {+,epsilon}
FIRST(T)= FIRST(intY) - epsilon U FIRST((E))
= {int,(}
FIRST(Y)= FIRST(* T) - epsilon U epsilon
= {*,epsilon}
计算FOLLOW集
关注(E) - > {$,)}
关注(X) - > {$,)}
关注(T) - > {+,$,)}
关注(Y) - > {+,$,)}
以上是关于编译器构造 - 遵循语法集的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 中创建构造函数的代码片段或快捷方式