recursion - 完全左因子以下语法,使其适合在自顶向下编译器中使用
问题描述
这里 S 是非终结符开始符号;A、B、C 是非终结符;x, y, 是终端符号
S → A B A C | A C A B
A → A x | A y
B → B x x | B y y
C → x y | y x
看过视频后,我了解了消除生产规则中左递归的简单示例,例如
S → a S a
S → b S b
S → ε
但我不明白如何在上面显示的规则中消除左递归。谁能解释或指出我的解释方向?
解决方案
在您的第二个示例中没有左递归,因此删除左递归是微不足道的。
在您的第一个语法中,您需要先进行左因子,然后才能解决递归消除问题。(事实上,你的问题的标题是“左因素”,所以你在家庭作业/测验中已经有了这个线索。)
上面提供的链接是谷歌通过搜索词“左因子语法”找到的数百个链接之一,但我建议你至少考虑一下你的课程材料是比谷歌搜索(或随机 Youtube)更好的信息来源的可能性视频)。
推荐阅读
- java - 无法在 java maven springboot 项目中使用“response.setService/.setMesage/.setData”
- pandas - 在熊猫数据框热图显示中使用中心发散颜色图
- c - 乘/加双打返回错误
- r - 预测数据集中不同国家的概率
- python - 错误:在 SavedModel 中找不到与标签“服务”关联的 MetaGraphDef
- python - How to append aggregated chunks to list using Python/Pandas?
- visual-studio-code - 如何纠正 Visual Studio Code 中的键定义?
- pine-script - 将 Pine Script Trailing Stop 转换为 version4
- c# - 如何使用 libphonenumber 查找电话号码?
- swiftui - 使用 SwiftUI。我的滑块/侧边菜单在单击时会启动新视图,但单击
按钮,现在所有选项都“死”了