解析分为两类,即自顶向下解析和自底向上解析。自上而下的解析基于最左派生,而自下而上的解析依赖于反向最右派生。
构建从根开始向下到叶子的解析树的过程是自顶向下解析。
- 自上而下的解析器从没有歧义和左递归的语法中构建。
- 自顶向下解析器使用最左推导来构建解析树。
- 它允许没有左因子分解的语法。
自顶向下解析的分类——
- 使用回溯:蛮力技术
- 没有回溯: 1.递归下降解析
2. Predictive Parsing or Non-Recursive Parsing or LL(1) Parsing or Table Driver Parsing
蛮力技术或递归下降解析 –
- 每当非终端第一次使用时,就选择第一个选项并与给定的 I/P 字符串进行比较
- 如果没有发生匹配,则使用第二个选项并与给定的 I/P 字符串进行比较。
- 如果再次未找到匹配,则选择替代方案,依此类推。
- 此外,如果匹配出现至少一个选项,则 I/P字符串解析成功。
LL(1) 或表驱动程序或预测解析器 –
- 在 LL1 中,第一个 L 代表从左到右,第二个 L 代表最左派生。 1 代表解析器在解析句子时使用的 Look Aheads 标记的数量。
- LL(1) 解析是从没有左递归、公共前缀和歧义的语法构建的。
- LL(1) 解析器依赖 1 个前瞻符号来预测产生式以扩展解析树。
- 这个解析器是非递归的。