第九章 编译原理课程第2讲.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中国科大 温故知新 编译原理的内容及学习意义 翻译器、编译器的定义 编译器的阶段划分及前端、后端的概念 “遍” 的概念 下列程序中哪些不是编译程序的组成部分? A 词法分析 B代码读入 C 语法分析 D代码生成 对下列错误信息,请指出可能是编译的哪个阶段报告的。 else没有匹配的if 数组下标越界 声明和使用的函数没有定义 零做除数 在数中出现非数字字符 判断 高级语编写的源程序都必顺通过编译,产生目标代码后才能运行. 多遍扫描的编译程序的多遍是指多次重复读源程序. 就执行速度而言,编译后再执行程序比解释执行程序慢. 第二章 词法分析 本章内容 词法分析器:把构成源程序的字符流翻译成记号流,还完成和用户接口的一些任务 围绕词法分析器的自动生成展开 介绍正规式、状态转换图和有限自动机概念 词法分析器的功能: 2.1 词法记号及属性 2.1.1 词法记号、模式、词法单元 词法单元:又称单词,是源程序中的字符串。 词法记号:满足某种规则的词法单元,采用同一种记法——词法记号。该规则称为模式。 模式:描述词法单元与词法记号对应关系的规则。是描述源程序中某个记号的词法单元集合的规则。 2.1 词法记号及属性 历史上词法定义中的一些问题 忽略空格带来的困难 DO 8 I ? 3. 75 DO8I ? 3. 75 DO 8 I ? 3, 75 关键字是否保留 IF THEN THEN THEN=ELSE;ELSE … 2.1 词法记号及属性 2.1.1 词法记号、模式、词法单元 C语言的标识符 ? x2, 12, _12, _abc 哪些是合法的C标识符? 2.1 词法记号及属性 2.1.1 词法记号、模式、词法单元 词法记号 词法单元例举 模式的非形式描述 var var var for for for relation , = , = , … 或 = 或 = 或 … id sum, count, D5 由字母开头的字母数字串 num 3.1, 10, 2.8 E12 任何数值常数 literal “seg. error” 引号“和”之间的任意字符 串,但引号本身除外 2.1 词法记号及属性 2.1.1 词法记号、模式、词法单元 词法记号的属性 词法记号的属性 如果简单地把词法记号流传给语法分析器,会产生什么后果? 语义被完全摒弃,只剩下一个语法结构 词法记号的属性 每个词法记号具有一定的含义(属性) 2.1 词法记号及属性 2.1.2 词法记号的属性 position := initial + rate * 60的记号和属性值: ?id,指向符号表中position条目的指针? ?assign _ op, ? ?id,指向符号表中initial条目的指针? ?add_op,+? ?id,指向符号表中rate条目的指针? ?mul_ op, *? ?num,整数值60? 2.1 词法记号及属性 2.1.2 词法记号的属性 练习题(要求使用伪代码给出算法): 编写一个程序,用于统计文件中单词的总数,不同单词的数目。 eg: I love Dalian and I love DLUT 单词总数:7 不同单词数目:5 2.1 词法记号及属性 2.1.3 词法错误 词法分析器对源程序采取非常局部的观点,难以发现下面的错误 fi (a == f (x) ) … 但是也有例外,如在实数是a.b格式下,可以发现下面的错误 123. 2.1 词法记号及属性 2.1.3 词法错误 恢复策略 “紧急方式” 错误修补尝试 删除一个多余的字符 插入一个遗漏的字符 用一个正确的字符代替一个不正确的字符 交换两个相邻的字符 2.2 词法记号的描述与识别 2.2.1 串和语言 字母表/字符类:符号(英文字母、标点符号等)的有限集合, 例:? = {0,1} 串:符号的有穷序列,例:0110,? 语言:字母表上的一个串集 {?,0,00,000,…}, {?}, ? 句子/字:属于语言的串 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 闭包:L? = L0 ∪ L1 ∪ L2 ∪… 正闭包: L+ = L1 ∪ L2 ∪…

文档评论(0)

0520 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档