编译器:词法分析器和解析器之间的主要区别是什么?


回答 1:

让我们将其视为一个类比,以英语为我们的编程语言。

词法分析器将输入划分为有效标记,即有意义的较小实体,并在语言中定义得当:

例如,“ beautiful”是有效的令牌,因为它是英语中的有效单词。

而“ dsefuewfiu”不是有效的令牌,因为它没有任何意义。

而Parser会检查语法,即句子遵循英语中句子形成的规律:

例如,“我的名字是Rahul”是有效的英语句子。

而“我的名字叫拉胡尔”是没有道理的。

这是词法分析器和解析器之间的基本区别。


回答 2:

词法分析器通常根据正则表达式进行解析,以语法形式提供解析器使用的输出:标识符,字符串,数字,运算符。

解析器使用令牌作为输入来实现更高级别的语法。 它可以完成词法分析器无法完成的工作,例如余额括号。

从技术上讲,不必将它分为两​​个步骤,但是从概念上讲,这样做要容易得多。


回答 3:

词法分析器是编译过程的第一阶段,该过程将源程序作为输入并产生一系列有意义的字符,称为词素...

这些词素可作为输入

下一个语法分析阶段。

在这个阶段,解析器将这个词素作为输入,并以语法树的形式产生输出……