编译器构造 - 遵循语法集

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 中创建构造函数的代码片段或快捷方式

C#中dataGridView用法集

k8s kubectl 命令用法集

k8s kubectl 命令用法集

无法解析片段中的 ViewModelProvider 构造?

VEGA:诺亚AutoML高性能开源算法集简介