【发布时间】:2017-05-18 02:46:46
【问题描述】:
我想知道如何获得语言 {0^m 1^m 2^n | 的产生式n>=0, m > n}。
这是我所拥有的,我不确定它是否正确。如果我错了,请纠正我:
S -> 01A | 0B1A | 00B11A
A -> 2A | 2 | λ
B -> 01
谢谢。
【问题讨论】:
-
这显然不正确:它不能产生
00001111(m=4, n=0),但它可以产生0122(违反了m>n 约束)。第一个问题可以通过使 B 可重复来解决,也许是B -> 01 | 0B1(请注意,这会使您对 S 的最终选择变得多余)。我想不出任何方法来强制 m>n 而不升级到更强大的东西,比如上下文相关的语法。
标签: grammar production discrete-mathematics