我正在阅读Dragonbook。
在第2章中,它解释了语法分析过程。我很难理解这个过程的整个画面。通过阅读本书,我有时会对语法分析器中的事情发生的顺序感到困惑。
从我的理解来看:
语法分析器包含语法定义,它使用上下文无关语法定义语法。这基本上是语法分析器的“第一部分”吗?那么语法分析器包含语法定义吗?
之后,Lexical Analyzer生成的令牌进入语法分析器。然后语法分析器通过CFG检查字符串输入是否有效,方法是生成一个解析树。
根据我的理解,这个解析树最终将成为一个(抽象)语法树(其中包含的细节少于解析树)。这棵树将进入语义分析器。
有人可以确认我对语法分析器的粗略“整体情况”是否正确并且顺序正确吗?
答案 0 :(得分:0)
语法分析器包含一个语法定义,它使用无上下文语法定义语法。
没有。在表驱动的解析器中,它包含一个从语法生成并驱动解析器的表。在手写的解析器中,代码结构强烈反映了语法。在这两种情况下,说解析器实际上“包含”语法都是正确的。 以某种方式根据语法解析输入 。
这基本上是语法分析器的“第一部分”吗?
没有。我不知道你从哪里得到'第一部分'。
语法分析器是否包含语法定义?
仅如上所述。
之后
不,之前
Lexical Analyzer生成的令牌进入语法分析器。语法分析器然后通过CFG检查字符串输入是否有效
正确。