ANTLR4在某些时候构建自动机吗?

时间:2015-07-17 18:01:58

标签: antlr antlr4

据我所知,最新的ANTLR4不再为词法分析器和解析器构建静态DFA表,现在他们在运行时就这样做了。它是否正确?有人可以解释一下ANTLR4的工作原理吗?

1 个答案:

答案 0 :(得分:3)

我们最近的论文描述了excruciating, academic detail中的机制。第3节提供了高级概述:

  

ALL(*)解析器不依赖于静态语法分析,而是适应在分析时呈现给它的输入句子。解析器使用类似GLR的机制分析当前决策点(具有多个产生的非终端),以探索关于当前“进程中非终结点”的“调用”堆栈和按需的剩余输入的所有可能的决策路径。解析器逐步动态地构建每个决策的预测DFA,记录从先行序列到预测生产数的映射。如果到目前为止构造的DFA与当前的前瞻相匹配,则解析器可以跳过分析并立即扩展预测的替代方案。

我们使用增强转换网络(ATN)来表示语法,但使用非常类似于NFA到DFA转换成名的子集构造算法的算法来构建DFA。

希望这有帮助。