最近在学习编译原理, 看完了词法分析在看语法分析, 看到两个概念
1.递归下降
2.自顶向下
根据我的理解递归下降和自顶向下应该是用来手工构造语法分析器的算法,而且递归下降避免了回溯,应该说比自顶向下要好(不知道这样理解对不对...)
之后继续看书看到了什么ll(1),lr 之类的概念,也提到了自顶向下,但好像是语法分析器的生成器里面的运用 我的问题在于:
这几个概念到底是怎么样的,递归下降 自顶向下算是两种不同的算法吗? 他们和语法分析器生成器有关系吗? 还有后面的ll lr 之类的概念都是语法生成器范畴类的还是手工构造也要用的呢...
自顶向下 / 自底向上 是parse算法的两大类
ll lr 递归下降这些是具体算法
ll和递归下降属于自顶向下类, lr lalr属于自底向上类
这些算法的程序可以手写 也可用程序生成