grammar - 如何使此 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 发生冲突,您可以在其中移动和减少相同的字符。我试图通过引入 epsilons 和新的非终端来解决问题,但总是有一些阻碍。
可以在非终端 N 中减少 'd' 和移位 'd',也可以在非终端 M 中移位/减少 'b' 和 'c'。
从语法派生的字符串示例:
abccdaaccdd!
aaabddd!
aabddaccd!
aabbbddabccbcd!
aacbcdacbdd!
acbbccd!
我认为我的语法是明确的,因为我看不出它有什么问题?
我怎样才能消除这种冲突?
谢谢!
解决方案
您是否尝试将规则中的 bM 交换为 Mb?
推荐阅读
- python - 如何在 python 中获取 xgb.train 的超参数
- c# - 为航点位置和链接创建 json
- python - 如何停止 Python 中的所有线程?
- flutter - 是否可以在 Flutter 中的图像文件上绘制文本?
- .net - Dynamics CRM:有没有办法模拟 OrganizationData 服务?
- api - Binance cURL no-libcurl 解析
- javascript - 为循环js读取前值
- pandas - 如何从具有原始时间戳的 PostgreSQL 数据库中导入数据?
- javascript - 如何在使用 JAVA 进行横向和纵向测试时旋转移动设备。我尝试使用 DesiredCapabilities 但它没有用
- xcode - 为什么我的 xcode 目标文件在我更新后看起来像这样?