关于编译原理语法分析的问题

最近在学习编译原理, 看完了词法分析在看语法分析, 看到两个概念
1.递归下降
2.自顶向下

根据我的理解递归下降和自顶向下应该是用来手工构造语法分析器的算法,而且递归下降避免了回溯,应该说比自顶向下要好(不知道这样理解对不对...)

之后继续看书看到了什么ll(1),lr 之类的概念,也提到了自顶向下,但好像是语法分析器的生成器里面的运用 我的问题在于:

这几个概念到底是怎么样的,递归下降 自顶向下算是两种不同的算法吗? 他们和语法分析器生成器有关系吗? 还有后面的ll lr 之类的概念都是语法生成器范畴类的还是手工构造也要用的呢...

阅读 4.7k
2 个回答

自顶向下 / 自底向上 是parse算法的两大类

ll lr 递归下降这些是具体算法

ll和递归下降属于自顶向下类, lr lalr属于自底向上类

这些算法的程序可以手写 也可用程序生成

不能简单的说那个好那个不好,都是有适用场景的, JAVA 里面就同时用到了这 2 种方式。

建议可以系统学习下《编译原理实战课

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进