阅读 174

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

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

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

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

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

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

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

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


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐