当前位置:
文档之家› 大学课程编译原理第二版第2讲课件
大学课程编译原理第二版第2讲课件
温故知新
编译原理的内容及学习意义 翻译器、编译器的定义 编译器的阶段划分及前端、后端的概念 “遍” 的概念
下列程序中哪些不是编译程序的组成部分?
A 词法分析 C 语法分析
B代码读入 BD代码读生入成
对下列错误信息,请指出可能是编译的哪 个阶段报告。
else没有匹配的if
数组下标越界
语法分析
声明和使用的函数没有定义语义分析或代码生成
INT SEMI-COL
2.1 词法记号及属性
2.1.2 词法记号的属性
position := initial + rate * 60的记号和属性值: id,指向符号表中position条目的指针 assign _ op, id,指向符号表中initial条目的指针 add_op,+ id,指向符号表中rate条目的指针 mul_ op, * num,整数值60
词法记号 中国人 美国人
词法单元例举 胡锦涛 毛泽东 奥巴马 克林顿
模式的非形式描述 具有中国国籍的人 具有美国国籍的人
词法记号的属性
源程序
词法分析器
记号
语法分析器
取下一个记号
符号表
存在的意义?
词法记号的属性
如果简单地把词法记号流传给语法分析器, 会产生什么后果?
语义被完全摒弃,只剩下一个语法结构
零做除数
语义分析
在数中出现非数字字符 代码优化或语义分析
词法分析
判断
高级语言编写的源程序都必须通过编译,产 生目标代码后才能运行(.×) 多遍扫描的编译程序的多遍是指多次重复 读源程序. (×) 就执行速度而言,编译后再执行程序比解释 执行程序慢. (×)
第二章 词法分析
源程序
词法分析器
记号
语法分析器
DO8I 3. 75
DO 8 I 3, 75
关键字是否保留
IF THEN THEN THEN=ELSE;ELSE …
2.1 词法记号及属性
2.1.1 词法记号、模式、词法单元
源程序 字符流
顺序 组合 词法
单元
模式
词法 记号
例: var count : integer ; count = 5 ;
2.2.1 串和语言
字母表/字符类:符号(英文字母、标点符号等)的
有限集合, 例: = {0,1}
长度的
串:符号的有穷序列,例:0110,
表示 |a|
语言:字母表上的一个串集
{,0,00,000,…}, {},
长度
句子/字:属于语言的串
为0
集合 字母表
的空 串
字母
串 组合
集合 语言
词法单元 模式 记号
2.1 词法记号及属性
2.1.2 词法记号的属性
练习题(要求使用伪代码给出算法): 编写一个程序,用于统计文件中单词的 总数,不同单词的数目。
eg: I love Dalian and I love DLUT 单词总数:7 不同单词数目:5
2.1 词法记号及属性
2.1.3 词法错误
词法分析器对源程序采取非常局部的观点, 难以发现下面的错误
闭包:L = L0 ∪ L1 ∪ L2 ∪… 正闭包: L+ = L1 ∪ L2 ∪…
例2.2(p17)
L: { A, B, …, Z, a, b, …, z }, D: { 0, 1, …, 9 } L∪D, LD, L6, L*, L(L∪D )*, D+
取下一个记号
符号表
本章内容
词法分析器:把构成源程序的字符流翻译成 记号流,还完成和用户接口的一些任务 围绕词法分析器的自动生成展开 介绍正规式、状态转换图和有限自动机概念
词法分析器的功能:
源代码 词法分析器 记号(token)流
2.1 词法记号及属性
2.1.1 词法记号、模式、词法单元
词法单元:又称单词,是源程序中的字符串。
fi (a == f (x) ) … 但是也有例外,如在实数是a.b格式下,可 以发现下面的错误
123.
2.1 词法记号及属性
2.1.3 词法错误
恢复策略
“紧急方式” 错误修补尝试
删除一个多余的字符 插入一个遗漏的字符 用一个正确的字符代替一个不正确的字符 交换两个相邻的字符
2.2 词法记号的描述与识别
for relation id num literal 符
for
for
< , < = , = , … < 或 <= 或 = 或 …
sum, count, D5 由字母开头的字母数字串
3.1, 10, 2.8 E12 任何数值常数
“seg. error” 引号“和”之间的任意字
串,但引号本身除外
2.1 词法记号及属性
词法单元
C语言的标识符
?
x2, 12, _12, _abc
哪些是合法的C标识符?
C语言标识符的规则(模式): 首字符必须是_或者字母,由_、字母或数字组成的字符串
2.1 词法记号及属性
2.1.1 词法记号、模式、词法单元
常见记号及模式的例子:
词法记号 词法单元例举 模式的非形式描述
var
var
var
2.1.1 词法记号、模式、词法单元
词法记号 名词 连词
词法单元例举 大连 软件 大黑山 和与或
模式的非形式化描述 表示名称的词 和 与 或 ….
词法记号 relation
id
词法单元例举
模式的非形式描述
< , < = , = , … < 或 <= 或 = 或 …
sum, count, D5 由字母开头的字母数字串
词法记号:满足某种规则的词法单元,采用同一种记 法——词法记号。该规则称为模式。
模式:描述词法单元与词法记号对应关系的规则。是描 述源程序中某个记号的词法单元集合的规则。
源程序字 符流
顺序 组合
词法 单元
模式
词法 记号
2.1 词法记号及属性
历史上词法定义中的一些问题
忽略空格带来的困难
DO 8 I 3. 75
我是学生
翻译官 Pronoun Verb Noun
说了什么呀????
词法记号的属性
每个词法记号具有一定的含义(属性)
L1 : x = y2 + 12 ;
ID COLON ID ASSGN
ID PLUS
第一个ID,名称是L1, 表示的是标号(Label) 第二个ID,名称是x, 表示的是一个变量,类型是int 第三个ID,名称是y2, 表示的是一个变量,类型是int
2.2 词法记号的描述与识别
2.2.1 串和语言 串的运算
连接 xy,s = s = s 积(指数) s0为,si为si -1s(i > 0)
2.2 词法记号的描述与识别
语言的运算
和:L∪M = {s | s L 或 s M } 连接:LM = {st | s L 且 t M} 指数:L0是{ },Li是Li -1L