微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使这个 CFG 没有冲突?

如何解决如何使这个 CFG 没有冲突?

所以我有以下语法,符号(a,b,c,d,!):

S → N!
N → aNd | aMd | aNdN | aMdN
M → bM | cM | b | c

本质上'a'和'd'是括号,中间必须包含一个或多个'b'和/或'c'。可以有多个括号,只要它们仍然包含一个或多个“b”和/或“c”。必须以 ! 结尾。

所以这个语法有效,但我正在努力使它无冲突。冲突与非终结符 N 和 M 发生冲突,您可以在其中移动和减少相同的字符。我试图通过引入 epsilon 和新的非终端来解决问题,但总是有一些障碍。

可以在非终结符 N 中减少 'd' 和移动 'd',也可以移动/减少 'b' 和非终结符 M 中的 'c'。

从语法派生的字符串示例:

abccdaaccdd!
aaabddd!
aabddaccd!
aabbbddabccbcd!
aacbcdacbdd!
acbbccd!

我认为我的语法没有歧义,因为我看不出有什么问题?

我怎样才能避免这种冲突?

谢谢!

解决方法

您是否尝试将规则中的 bM 交换为 Mb?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。