关于编译原理语法分析的问题
最近在学习编译原理, 看完了词法分析在看语法分析, 看到两个概念
1.递归下降
2.自顶向下
根据我的理解递归下降和自顶向下应该是用来手工构造语法分析器的算法,而且递归下降避免了回溯,应该说比自顶向下要好(不知道这样理解对不对...)
之后继续看书看到了什么ll(1),lr 之类的概念,也提到了自顶向下,但好像是语法分析器的生成器里面的运用 我的问题在于:
这几个概念到底是怎么样的,递归下降 自顶向下算是两种不同的算法吗? 他们和语法分析器生成器有关系吗? 还有后面的ll lr 之类的概念都是语法生成器范畴类的还是手工构造也要用的呢...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
自顶向下 / 自底向上 是parse算法的两大类
ll lr 递归下降这些是具体算法
ll和递归下降属于自顶向下类, lr lalr属于自底向上类
这些算法的程序可以手写 也可用程序生成
建议看看这个:https://segmentfault.com/a/1190000005069693
不能简单的说那个好那个不好,都是有适用场景的, JAVA 里面就同时用到了这 2 种方式。
建议可以系统学习下《编译原理实战课》