编译原理词法分析(1)
时间:2025-04-20
时间:2025-04-20
编译原理第二章词法分析
编译原理第二章 词法分析(1)——词法分析的若干问题与模式的形式化描述
华侨大学计算机学院 陈霞
编译原理第二章词法分析
内容简介 0、回顾:词法分析 1、词法分析中的若干问题 词法分析器的作用和工作方式 输入缓冲区 记号、模式、单词 记号的属性
2、模式的形式化描述 字符串与语言 正规式与正规集 记号的说明
编译原理第二章词法分析
源程序
分析阶段
词法分析器 语法分析器 符 号 表 管 理 器 语义分析器
中间代码生成 代码优化 代码生成综合阶段
错 误 处 理 器
目标程序
编译原理第二章词法分析
0、回顾:词法分析 词法分析是编译过程中将字符流转换成为符号流 的一个工作阶段,是编译的第一步工作,其后续 工作是语法分析。 词法分析的输入是源代码; 词法分析的输出是符号流; 词法分析需要识别词法错误,即非法的符号、单词 等等。但不识别语法错误。
编译原理第二章词法分析
0、回顾:词法分析的一些思考 为什么不直接使用字符串进行后续工作,如语法 分析? 词法分析还有其他什么作用? 词法分析中,把字符流转换成符号流存在着什么 困难(什么样的字符串有利于/不利于词法分析的 进行)? 我们使用什么方法和工具来描述和解决词法分析 中遇到的困难?
编译原理第二章词法分析
1.3 词法分析器的作用 源程序由单词组成,单词是最小的语义单位 词法分析器的功能: 扫描源程序字符流 按照源语言的词法规则识别出各类单词符号 产生用于语法分析的记号序列 词法分析器的辅助功能 跳过源程序中的注释和空白 把错误信息和源程序联系起来(错误定位) 宏预处理
编译原理第二章词法分析
1.3.2词法分析器的工作方式一、词法分析器与语法分析器的关系1. 词法分析器作为语法分析器的子程序 2. 词法分析器作为独立的一遍 3. 词法分析器与语法分析器作为协同程序
二、分离词法分析器的好处三、词法分析的一些难点
编译原理第二章词法分析
1.3.2词法分析器与语法分析器的关系1. 词法分析器作为语法分析器的子程序调用
字符串 源程序
字符
词法 分析器
记号
语法 分析器
语法树
符号表 避免了中间文件 省去了取送符号的工作 有利于提高编译器的效率
编译原理第二章词法分析
2. 词法分析器作为独立的一遍字符串源程序字符
词法分析器
记号
记号流源程序
输出放入一个中间文件 磁盘文件 内存文件
编译原理第二章词法分析
3. 与语法分析器并行工作
词法分析程序与语法分析程序在同一遍中,以生 产者和消费者的关系同步运行。
编译原理第二章词法分析
1.3.3分离词法分析器的好处 可以简化设计 可以改进编译器的效率
可以加强编译器的可移植性
编译原理第二章词法分析
1.4 输入缓冲区设置缓冲区的必要性 超前搜索:为了得到某一个单词符号的确切性质, 需要超前
扫描若干个字符。例:> 和 >= 例:有合法的FORTRAN语句:
DO99K=1,10
和
DO99K=1.10
为了区别这两个语句,必须超前扫描到等号后的 第一个分界符处。 方便实现读字符和退字符操作,提高词法分析器的 效率。
编译原理第二章词法分析
1.4.1单缓冲区 一般使用两个指针标识当前扫描的位置,第一个 指针表示当前被识别的记号的第一个字符,另一 指针表示现在正在扫描的字符
… … i f
x = y
t h e n
j : = j + 2
; eof
…
开始指针
向前指针
编译原理第二章词法分析
1.1记号、模式与单词记号:是指某一类单词符号的种别编码,如标识符 的记号为id,数的记号为num等。(机内表示) 模式:是指某一类单词符号的构词规则,如标识符 的模式是“由字母开头的字母数字串”。 (构词规则) 单词:是指某一类单词符号的一个特例,如position 是标识符。(外部表示)
编译原理第二章词法分析
示例:词法分析的输入和输出 for ( i=1; i<=100; i++) sum = sum + i;
<保留字,for> <分隔符,(> <标识符,i> <算符 ,= > <常量,1> <分隔符,;> <标识符,i> <算符 ,<= > <常量,100> <分隔符,;> <标识符,i> < 算符,++ > <分隔符,)> <标识符,sum> <算 符,= > <标识符,sum> <算符,+ > <标识符,i> < 分隔符,;>
编译原理第二章词法分析
词法分析器的输出——记号 记号的种类: 关键字:for, while, if等; 标识符:position,rate等; 常数:60 特殊符号: 算符:+-*/等; 分隔符:分号,空格,引号等等;
上一篇:注册会计师考试各科目报考建议
下一篇:中国十大灵异事件之故宫