下面的每个 BNF 文法生成什么语言
What language is generated by each of the BNF grammars below
以下各BNF语法生成什么语言(假设s为起始符号):
<s> -> <x> | <y>
<x> -> 0 <x> 1 | <x1>
<x1> -> 0 <x1> | 0
<y> -> 0 <y> 1 1 | <y1>
<y1> -> <y1> 1 | 1
我明白它的作用:0^n 1^n
但我之前在网上(其他地方)寻求帮助,有人给了我答案:
For <x>: 0^n 1^m where n > m and m >= 0
For <y>: 0^n 1^m where m > 2n and m >=0
我不太明白,不平等从何而来?
为什么n大于m?为什么m大于2n?
我猜 2n 来自 y 的两个 1,但是如何判断 n 大于还是小于 m?反之亦然?我完全忘记了。
我们以x为例
<x1> -> 0 <x1> | 0 <x1>: 0^n, n > 0
<x> -> 0 <x> 1 | <x1>
这意味着 x 的形式为:
<x>: 0^m 0^n 1^m, n >= 1, m >= 0
因为如果 0^m 1^m 中间总会有一个 x1。如果我们简化我们将有
<x>: 0^(m + n) 1^m, n >= 1, m >= 0
m + n > m 因为 n 严格为正。
以下各BNF语法生成什么语言(假设s为起始符号):
<s> -> <x> | <y>
<x> -> 0 <x> 1 | <x1>
<x1> -> 0 <x1> | 0
<y> -> 0 <y> 1 1 | <y1>
<y1> -> <y1> 1 | 1
我明白它的作用:0^n 1^n
但我之前在网上(其他地方)寻求帮助,有人给了我答案:
For <x>: 0^n 1^m where n > m and m >= 0
For <y>: 0^n 1^m where m > 2n and m >=0
我不太明白,不平等从何而来?
为什么n大于m?为什么m大于2n?
我猜 2n 来自 y 的两个 1,但是如何判断 n 大于还是小于 m?反之亦然?我完全忘记了。
我们以x为例
<x1> -> 0 <x1> | 0 <x1>: 0^n, n > 0
<x> -> 0 <x> 1 | <x1>
这意味着 x 的形式为:
<x>: 0^m 0^n 1^m, n >= 1, m >= 0
因为如果 0^m 1^m 中间总会有一个 x1。如果我们简化我们将有
<x>: 0^(m + n) 1^m, n >= 1, m >= 0
m + n > m 因为 n 严格为正。