编译器构造中的语法分析过程

时间:2014-02-24 21:56:40

标签: syntax compiler-construction analyzer construction

我正在阅读Dragonbook。

在第2章中,它解释了语法分析过程。我很难理解这个过程的整个画面。通过阅读本书,我有时会对语法分析器中的事情发生的顺序感到困惑。

从我的理解来看:

语法分析器包含语法定义,它使用上下文无关语法定义语法。这基本上是语法分析器的“第一部分”吗?那么语法分析器包含语法定义吗?

之后,Lexical Analyzer生成的令牌进入语法分析器。然后语法分析器通过CFG检查字符串输入是否有效,方法是生成一个解析树。

根据我的理解,这个解析树最终将成为一个(抽象)语法树(其中包含的细节少于解析树)。这棵树将进入语义分析器。

有人可以确认我对语法分析器的粗略“整体情况”是否正确并且顺序正确吗?

1 个答案:

答案 0 :(得分:0)

  

语法分析器包含一个语法定义,它使用无上下文语法定义语法。

没有。在表驱动的解析器中,它包含一个从语法生成并驱动解析器的表。在手写的解析器中,代码结构强烈反映了语法。在这两种情况下,说解析器实际上“包含”语法都是正确的。 以某种方式根据语法解析输入

  

这基本上是语法分析器的“第一部分”吗?

没有。我不知道你从哪里得到'第一部分'。

  

语法分析器是否包含语法定义?

仅如上所述。

  

之后

不,之前

  

Lexical Analyzer生成的令牌进入语法分析器。语法分析器然后通过CFG检查字符串输入是否有效

正确。