编译原理——词法分析(1)

本文介绍了词法分析器的构造,包括词法分析器的生成、正则表达式的转换、词法分析器的作用以及与语法分析器的交互。词法分析主要涉及词法单元、模式和词素的匹配,用于识别源程序中的关键字、运算符、标识符、常量等,并处理注释和空白。此外,还讨论了缓冲区对的概念,用于提高输入处理效率,并介绍了错误恢复策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在我们学习词法分析时,就会思考如何构造一个词法分析器?
一个词法分析器可以通过手工构造;也可以通过以下方式自动生成一个词法分析器:向一个词法分析器生成工具描述出词素的模式,然后将这些模式编译为具有动词分析器功能的代码。

如何对正则表达式进行转换?
首先转换为不确定有穷自动机,然后再转换为确定有穷自动机。

词法分析器的作用:
1.读入源程序的输入字符、将他们组成词素,生成并输出一个词法单元序列,每个词法单元对应于一个词素。这个词法单元序列被输出到语法分析器进行语法分析。
2.词法分析器通常还要和符号表进行交互。当词法分析器发现了一个标识符的词素时,它要将这个词素添加到符号表中。在某些情况,词法分析器会从符号表中读取有关标识符种类的信息,以确定向语法分析器传送哪个词法单元。
3.完成一些识别词素之外的其他任务。(1)过滤掉源程序中的注释和空白(空格、换行符、制表符以及在输入中用于分隔词法单元的其他字符)(2)将编译器生成的错误信息与源程序的位置联系起来。例如词法分析器可以负责记录遇到的换行符的个数,以便给每个出错信息赋予一个行号。如果源程序使用了一个宏预处理器,则宏的扩展也可以由词法分析器完成。

词法分析器与语法分析器的交互过程:通常,交互是由语法分析器调用词法分析器来实现的,其中图中的命令getNextToken所指示的调用使得词法分析器从它的输入中不断读取字符,知道它识别出下一个词素为止。词法分析器根据这个词素生成下一个词法单元并返回给语法分析器。

词法分析器分成两个级联的处理阶段:
    1.扫描阶段,主要负责完成一些不需要生成词法单元的简单处理,比如删除注释和将多个连续的空白字符压缩成一个字符。
    2.词法分析阶段,处理扫

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值