【发布时间】:2021-12-02 12:28:31
【问题描述】:
这是一个生成 0、1 或 0 和 1 的字符串的 CFG,其排列方式如下 (001, 011),其中一个字符的计数必须大于另一个字符,例如 00011111 或 00000111。
S → 0S1 | 0A | 0 | 1B | 1
A → 0A | 0
B → 1B | 1
我尝试使用此 guide 将其转换为正则表达式,但由于在该指南中找不到与它类似的任何内容,我无法转换 0S1,因此我被困在这里。
S → 0S1 | 0+ | 0 | 1+ | 1
A → 0A | 0 = 0+
B → 1B | 1 = 1+
我之前的尝试之一是0+0+1|0+1+1|1+|0+,但它不接受我上面提到的字符串,例如00011111 和00000111。
【问题讨论】:
-
这可能听起来很尴尬,但我不知道你在说什么,
-
是什么让您认为该语言是常规的?乍一看,这似乎不太可能(“常规语言不能算”)
标签: regex context-free-grammar context-free-language automata-theory