我对这个问题有疑问:
L =空,字母为{a,b}
如何为此创建语法?怎么可能是生产规则? 提前谢谢
答案 0 :(得分:1)
语法G是有序的4元组{S,N,E,e,P}其中:
G中的推导是(N U E U e)*的元素序列,使得:
如果G中有一个推导,其最后一个元素是一个字符串w [n] over(E U e)*,我们说G生成w [n];也就是说,w [n]在L(G)中。
现在,我们要定义一个语法G,使L(G)为空集。我们修复了字母E = {a,b}。我们仍然必须定义:
我们不妨把S作为我们的开始符号。所以N至少包含S; N是{S}的超集。如果我们确定需要它们,我们只会添加更多非终结符。让我们把注意力转向L(G)为空的条件。
如果L(G)为空,则意味着G中没有导出仅一串终端符号的推导。我们可以很容易地完成这一任务,确保我们的所有作品都能在任何终端上产生至少一个非终端产品。或者根本不生产终端。所以下面的语法都可以工作:
S := S
或
S := aSb
或
S := aXb | XXSSX
X := aabbXbbaaS
等。所有这些语法都有L(G)为空,因为它们都不能派生出一串非终结符。