大学课程编译原理第二版第2讲课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
闭包: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+
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 词法记号的描述与识别
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
fi (a == f (x) ) … 但是也有例外,如在实数是a.b格式下,可 以发现下面的错误
123.
2.1 词法记号及属性
2.1.3 词法错误
恢复策略
“紧急方式” 错误修补尝试
删除一个多余的字符 插入一个遗漏的字符 用一个正确的字符代替一个不正确的字符 交换两个相邻的字符
2.2 词法记号的描述与识别
零做除数
语义分析
在数中出现非数字字符 代码优化或语义分析
词法分析
判断
高级语言编写的源程序都必须通过编译,产 生目标代码后才能运行(.×) 多遍扫描的编译程序的多遍是指多次重复 读源程序. (×) 就执行速度而言,编译后再执行程序比解释 执行程序慢. (×)
第二章 词法分析
源程序
词法分析器
记号
语法分析器
2.1.1 词法记号、模式、词法单元
词法记号 名词 连词
词法单元例举 大连 软件 大黑山 和与或
模式的非形式化描述 表示名称的词 和 与 或 ….
词法记号 relation
id
词法单元例举
模式的非形式描述
< , < = , = , … < 或 <= 或 = 或 …
sum, count, D5 由字母开头的字母数字串
2.2.1 串和语言
字母表/字符类:符号(英文字母、标点符号等)的
有限集合, 例: = {0,1}
长度的
串:符号的有穷序列,例:0110,
表示 |a|
语言:字母表上的一个串集
{,0,00,000,…}, {},
长度
句子/字:属于语言的串
为0
集合 字母表
的空 串
字母
串 组合
集合 语言
词法单元 模式 记号
词法记号 中国人 美国人
词法单元例举 胡锦涛 毛泽东 奥巴马 克林顿
模式的非形式描述 具有中国国籍的人 具有美国国籍的人
词法记号的属性
源程序
词法分析器
记号
语法分析器
取下一个记号
符号表
存在的意义?
词法记号的属性
如果简单地把词法记号流传给语法分析器, 会产生什么后果?
语义被完全摒弃,只剩下一个语法结构
词法单元
C语言的标识符
?
x2, 12, _12, _abc
哪些是合法的C标识符?
C语言标识符的规则(模式): 首字符必须是_或者字母,由_、字母或数字组成的字符串
2.1 词法记号及属性
2.1.1 词法记号、模式、词法单元
常见记号及模式的例子:
词法记号 词法单元例举 模式的非形式描述
var
var
var
温故知新
编译原理的内容及学习意义 翻译器、编译器的定义 编译器的阶段划分及前端、后端的概念 “遍” 的概念
下列程序中哪些不是编译程序的组成部分?
A 词法分析 C 语法分析
B代码读入 BD代码读生入成
对下列错误信息,请指出可能是编译的哪 个阶段报告的。
else没有匹配的if
数组下标越界
语法分析
声明和使用的函数没有定义语义分析或代码生成
词法记号:满足某种规则的词法单元,采用同一种记 法——词法记号。该规则称为模式。
模式:描述词法单元与词法记号对应关系的规则。是描 述源程序中某个记号的词法单元集合的规则。
源程序字 符流
顺序 组合
词法 单元
模式
词法 记号
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
取下一个记号
符号表
本章内容
词法分析器:把构成源程序的字符流翻译成 记号流,还完成和用户接口的一些任务 围绕词法分析器的自动生成展开 介绍正规式、状态转换图和有限自动机概念
词法分析器的功能:
源代码 词法分析器 记号(token)流
2.1 词法记号及属性
2.1.1 词法记号、模式、词法单元
词法单元:又称单词,是源程序中的字符串。
百度文库.1 词法记号及属性
2.1.2 词法记号的属性
练习题(要求使用伪代码给出算法): 编写一个程序,用于统计文件中单词的 总数,不同单词的数目。
eg: I love Dalian and I love DLUT 单词总数:7 不同单词数目:5
2.1 词法记号及属性
2.1.3 词法错误
词法分析器对源程序采取非常局部的观点, 难以发现下面的错误
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
for relation id num literal 符
for
for
< , < = , = , … < 或 <= 或 = 或 …
sum, count, D5 由字母开头的字母数字串
3.1, 10, 2.8 E12 任何数值常数
“seg. error” 引号“和”之间的任意字
串,但引号本身除外
2.1 词法记号及属性
相关文档
最新文档