在编译器设计中,词法分析器的作用是什么?


词法分析是编译器的第一个阶段,其中词法分析器充当源代码和编译器其余阶段之间的接口。它读取源程序的输入字符,将其分组为词素,并为每个词素生成一系列标记。这些标记被发送到解析器进行语法分析。

如果词法分析器作为编译器中的一个单独的阶段存在,则可能需要一个中间文件来存放其输出,然后解析器从中获取输入。它可以消除对中间文件的需求,词法分析器和语法分析器(解析器)通常组合到同一个阶段,其中词法分析器要么在解析器的控制下运行,要么作为解析器的子程序运行。

词法分析器在将标记传递给解析器时也与符号表进行交互。每当发现一个标记时,词法分析器就会向解析器返回该标记的表示形式。如果标记是一个简单的结构,包括括号、逗号或冒号,则它会返回一个整数程序。如果标记是更复杂的项目,包括标识符或具有值的另一个标记,则该值也会传递给解析器。

词法分析器将源语言的字符分成逻辑上属于同一组的单元,称为标记。它包括标记名称,这是一个定义词法单元类型的抽象符号,以及一个可选的属性值,称为标记值。标记可以是标识符、关键字、常量、运算符和标点符号,包括逗号和括号。表示一组输入字符串的规则,对于这些字符串,输出相同的标记,称为模式。

正则表达式在指定模式方面发挥着至关重要的作用。如果关键字被视为标记,则模式只是一个字符序列。对于标识符和各种标记,模式形成一个复杂的结构。

词法分析器还处理诸如去除注释和空白(制表符、换行符、空格和其他用于分隔输入中标记的字符)等问题。与源程序一起,编译器在词法分析器期间生成的相应错误消息。

例如,它可以跟踪所有换行符,以便它可以将每个错误消息与模糊的语句行号相关联。在宏的情况下,可以在源程序中使用预处理器来实现宏的扩展。

更新于: 2023年11月7日

44K+ 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告