我如何推导这些语法
How can I derivate these Grammar
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 → ε)
就是这样。一点都不复杂。只是一堆搜索和替换操作。 (如果有不止一种可能性,你不需要替换第一个出现的地方。你可以按照你喜欢的任何顺序进行替换。但是系统化很方便。)
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 → ε)
就是这样。一点都不复杂。只是一堆搜索和替换操作。 (如果有不止一种可能性,你不需要替换第一个出现的地方。你可以按照你喜欢的任何顺序进行替换。但是系统化很方便。)