编译原理学习——下推自动机PDA与有限自动机DFA

为何说丢失了信息

从需求的角度,如果 DFA 与上下文无关文法(2 型文法)等价,我们仅通过 DFA 就可以完成全部的语法分析,不必引入堆栈等等,但实际上我们需要用到堆栈,也可以直观感受到 DFA 相较于上下文无关文法,信息不足,而缺少的那部分,就和这个“堆栈”密切相关。

从词法、语法分析的角度,我们在先前第二章已经接触了词法分析,使用的利器就是 DFA 或者 NFA,那既然词法分析用的是这个工具,到了语法分析仍然使用相同的工具就可以完成,岂不是倒退语法分析需求(难度)与词法分析需求(难度)相等吗?显然这是不可能的,所以对于 DFA 对于语法分析并不是全部,还缺少着信息。

从等价性的角度(这个更科学一些吧),我们了解到 DFA 与 NFA 两者的识别能力相同,且和 RE(正规表达式)可以相互转化,又与正规文法(3 型文法)等价,而上下文无关文法(2 型文法)与 PDA(下推自动机)是等价的。所以我们可以确定由上下文无关文法构造分析表(DFA)时,缺少的信息实际上就是 PDA 和 DFA 的差别。

丢了什么