Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Syntax 编译器构造中的语法分析过程_Syntax_Compiler Construction_Analyzer_Construction - Fatal编程技术网

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

Syntax 编译器构造中的语法分析过程,syntax,compiler-construction,analyzer,construction,Syntax,Compiler Construction,Analyzer,Construction,我现在正在读龙之书 第二章介绍了语法分析过程。我正在努力理解整个过程。通过阅读这本书,我有时会对语法分析器中的事情发生的顺序感到困惑 根据我的理解: 语法分析器包含语法定义,它使用上下文无关语法定义语法。这基本上是语法分析器的“第一部分”吗?那么语法分析器是否包含语法定义 之后,词法分析器生成的标记进入语法分析器。然后,语法分析器通过CFG生成解析树,检查字符串输入是否有效 根据我的理解,这个解析树最终将成为一个(抽象的)语法树(比解析树包含更少的细节)。此树将进入语义分析器 有人能确认我对语法

我现在正在读龙之书

第二章介绍了语法分析过程。我正在努力理解整个过程。通过阅读这本书,我有时会对语法分析器中的事情发生的顺序感到困惑

根据我的理解:

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

之后,词法分析器生成的标记进入语法分析器。然后,语法分析器通过CFG生成解析树,检查字符串输入是否有效

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

有人能确认我对语法分析器的大致“总体”理解是否正确,顺序是否正确吗

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

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

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

不,我不知道你从哪里得到“第一部分”

那么语法分析器是否包含语法定义

仅如上所述

之后

不,在那之前

词法分析器生成的标记进入语法分析器。然后,语法分析器通过CFG检查字符串输入是否有效