我已经看过Alex Aiken的this course并阅读了许多其他资源。但我很难找到自上而下解析器的清晰分类。
This document也没有提供明确的分类,但至少给出了我将在帖子中使用的一些定义。所以这是我到目前为止的分类:
回溯
的一个解决方法解析。将实施回溯。根据这些信息, 解析器目前大约有输入,作出决定去与一个特定的 生产。如果这种选择导致了死胡同,解析器将不得不回溯到 决策点,向后移动通过输入,并重新开始制作不同 选择等等,直到它发现这是一个合适的生产或跑 出的选择。
预测
一个预测 解析器的特点是其选择的生产能力的基础上,仅适用 下一个输入符号和当前非末端的正在处理中。
递归下降
一个 递归下降语法分析器包括几个小的功能,一个用于每个非终结在 语法。当我们分析一个句子,我们称之为对应左边的功能 我们正在申请作品的侧非终结。如果这些作品是递归的, 我们最终调用的功能的递归。
表驱动
有是用于实现使用一个表到生产存储与显式堆沿跟踪我们在分析
,其中的预测分析器的另一种方法
如果我是正确的,有些人还可以告诉我LL(k)
解析器在以下4种类型的解析器中的位置在哪里?
答案 0 :(得分:1)
没有。你有:
所以你可以:
具体而言,“表/堆栈实现的递归下降”是一个矛盾。
所有表驱动的解析器实现都需要一个堆栈。这不是二分法。
在以下4种类型的解析器中LL(k)解析器落在哪里?
任何地方。