我无法从给定的上下文无关语法中确定语言。我得到的提示是该语言有2个部分,但都无法弄清楚。
G= ({S,A,B,C,D,E,Z},(0,1),R,S),
S→E|Z
E→A|C
A→01B|0A|e
B→1B|10A
C→10D|1C|e
D→01C|0D
Z→0Z1|e
e是空字符串。我已经知道,如果是Z,则0和1的数目相等,但是如果到E,就无法弄清楚
答案 0 :(得分:1)
种类繁多,但是您可以很容易地将语法分解为子语法,可以独立进行分析。
首先,E
规则仅出现在RHS上的一个位置,因此您可以通过制作S
规则S→A|C|Z
来代替它并摆脱它。这些非终结符中的每一个都导致独立的子语言(语言A仅包含A
和B
的规则,仅包含C
和D
的语言C和语言Z仅带有Z
。您的语言G只是这三个子语言的并集。
语言A很普通(由于所有非末端都在规则的RHS末尾),并且可以普通地转换成2状态E-NFA,从而减少为正则表达式(0 | 011 * 10 )*
语言C类似地减少为正则表达式(1 | 100 * 01)*
语言Z是唯一的非常规子部分,并且是语言{0 i 1 i | i≥0}
这三种语言的并集是语言G,除了语法之外,没有其他任何特别好的描述方式。