Parsing 非终端符号X可为空吗

Parsing 非终端符号X可为空吗,parsing,compiler-construction,nullable,Parsing,Compiler Construction,Nullable,我一直在关注编译器设计的视频教程系列。当前视频是关于计算预测解析表中的第一个和后续函数。我的问题是关于以下生产规则 Z-->XYZ Y--> c X-->a Z-->d Y-->E(epsilon) X-->bYe 我们可以将X减少为E空字符串吗。或者另一种方式是X可为空。在我看来,当我们使用规则时,X-->bYeX可以减少到Y,因此非终端符号X可以为空,因为Y-->E(ε)。 导师说X不能为空,因此我感到困惑

我一直在关注编译器设计的视频教程系列。当前视频是关于计算预测解析表中的第一个和后续函数。我的问题是关于以下生产规则

Z-->XYZ    Y--> c             X-->a
Z-->d      Y-->E(epsilon)     X-->bYe
我们可以将
X
减少为
E
空字符串吗。或者另一种方式是
X
可为空。在我看来,当我们使用规则时,
X-->bYe
X
可以减少到
Y
,因此非终端符号
X
可以为空,因为
Y-->E(ε)

导师说
X
不能为空,因此我感到困惑。如果有人能消除我的困惑,我将不胜感激。该系列视频是4年前发布的,我没有收到视频作者的回复。

我不明白你的意思。如何使用规则X-->将X减少为Y?再见?谢谢@ThomasPadron McCarthy。我认为X可以被3个符号中的任意一个所取代,即b Y或e Aha。否,X-->bYe表示X可以被序列bYe替换,或者更确切地说是b(Y可以被e替换的东西)。或者它可能写为X-->b|Y|e。谢谢@ThomasPadron McCarthy现在我对这一点很清楚了。另外,当我使用“减少”这个词时,我会反过来使用它。因此,例如,给定生产X-->abc,我认为可以将abc减少到X,但不能将X减少到abc。我不确定这种用法是否通用。