我怎样才能推导出这些语法

问题描述

G = (V={S,X,Y},T={0,1,2},P,S)

S -> 0X1
X ->S | 00S2 | Y | ε
Y ->X | 1

问题是我不知道如何推导数字..

我如何在这里推导: 00111∈L(G)

这里我必须给出推论三: 0000121∈L(G)

解决方法

要进行推导,您从开始符号(在本例中为 S)开始,它是语法元组中的第四项)。然后,您可以按照您认为合适的任何顺序应用产生式规则 (P)。

制作如下:

X → S | 00S2 | Y | ε

表示您可以将 X 替换为

  • S
  • 00S2
  • Y
  • 没什么。

换句话说,你阅读产生式规则如下:

  • 表示“可以替换为”。
  • | 表示“或”
  • ε 表示“无”(用无替换符号意味着从当前字符串中删除它。)

其他一切都只是字符串中的一个可能符号。您不断进行替换,一次一个,直到到达您要导出的字符串。

这是一个简单的例子:

S
 → 0X1      (using S → 0X1)
 → 000S21   (using X → 00S2)
 → 0000X121 (using S → 0X1)
 → 0000121  (using X → ε)

就是这样。一点都不复杂。只是一堆搜索和替换操作。 (如果有多种可能,您不需要替换第一次出现。您可以按照您喜欢的任何顺序进行替换。但系统化很方便。)