[英]CFG for language
我正在尝试创建一个生成以下语言的 cfg:
这种语言是否与上下文无关并且可以由 cfg 生成? 如果是,如何创建生成这种语言的语法?
我在为 cfl 创建 cfg 方面没有太多经验。 如果提供任何帮助或解决方案,我会很高兴
首先,您知道如何为语言{a^nd^t | n = t}
创建 CFG 吗? {a^nd^t | n = t}
? 这将是您的起点。
S -> aSd | epsilon
从这里开始,您需要扩展当a
s 多于d
s 或d
s 多于a
s 时发生的情况。 目标始终是确保对于在左侧消耗的每个a
或b
,在右侧消耗c
或d
。
S -> aSd | aAc | bDd | epsilon
A
是a
s 比d
s 多的情况, D
是另一种情况。 在其中的每一个中,您需要为每个右侧字符消耗一个左侧字符。
还有一种情况,即n
和t
中的一个或两个都是0
。 我会把它留给你来决定如何处理。
然后你将不得不处理耗尽一方的角色。 例如,如果您处于状态A
,您希望将a
s 与c
s 匹配,直到a
s 用完并变成b
s。 就像是,
A -> aAc | bCc
剩下的就交给你去想办法了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.