编译原理及实现.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理及实现 编译原理---课前思考 为什么有些语言规定标识符不能超过8个字符?而有些语言对标识符的长度无限制? 为什么有些语言能实现递归,而有些语言不能? C语言规定数组下界为0,上界为声明的数减1,为什么? 嵌套的IF语句规定ELSE与上面最近的IF配对,为什么? 为什么有些程序运行一段时间后会导致内存溢出? 为什么Java实现了“一次编写,到处运行”? …… 学习内容 学习要求 参考书目 课程学习网站 题 外 话 基本:完成课程学习,通过考试,获得学分。 提高:能够将所学知识和内容用于解决实际问题。 飞跃:通过编译原理的学习,改进思维方式,为将来的工作打好基础,终身受益。 第1章 编译概述 学习内容: 1.1 程序设计语言 1.2 翻译程序 1.3 编译程序的组成 1.4 编译程序的结构 1.5 编译程序的前后处理器 1.6 TEST语言与编译器 第1章 编译概述 学习重点: 1、编译程序 2、编译程序与解释程序的根本区别 3、典型的编译程序模型及其各组成 部分的功能 回顾:什么是程序设计语言? 为实现特定目标或解决特定问题而用计算机语言编写的指令序列的集合。 常见的程序设计语言: C++, Java, C, FORTRAN, Pascal, Lisp, Basic, ML等 1.1 程序设计语言(p1) 1、机器语言(最低形式,属低级语言) 特点:程序中的每条指令都是用二进制代码直接表示的,由它构成机器的指令系统,机器能直接识别和直接执行,但机器语言程序难写、难读、难修改,编程的工作量大,对程序员的要求高。 机器语言程序示例: 3、高级语言 特点:它独立于机器,比较接近自然语言,因而容易学习和掌握,且编写程序效率高,编写出的程序易读、易理解、易修改、易移植,但机器不能直接识别和直接执行。 3、翻译程序在计算机系统中的所在层 编译程序 vs. 解释程序 看起来,编译器似乎完全能代替汇编啊! 回答是No。 Why? 高级语言通过编译器转化成的机器语言,受限于高级语言,其效率和功能上都有限制。比如不能过分操作内存。但通过汇编器转化过来的机器语言,效率高,且用汇编语言,可直接和CPU对话! 汇编可以反汇编(逆向编译),即: 程序(二进制机器语言)通过反汇编器(compiler),可转化为汇编代码(文本) 但永远不能转化为高级语言的源代码! 编译过程 自然语言的翻译(如把英文翻译为中文 ) 识别出句子中的一个个单词; 分析句子的语法结构; 根据句子的含义进行初步翻译; 对译文进行修饰; 写出最后的译文。 1.4 编译程序的结构(p7) 把编译程序分为前端和后端的优点是便于编译程序的构造和移植。 例如,有K种高级语言、L种目标机器,如果不分前端和后端,就需要建立K*L套编译程序,而分成前端和后端,只需要建立K(前端)+L(后端)套编译程序。 1.6 TEST语言与编译器(p10) 一、TEST语言 TEST语言程序是由一对花括号括起来的语句序列,它在语法上相当于C语言的函数体。 声明语句:只能是简单的整型变量 控制语句:if、while和for语句 表达式语句:布尔表达式和算术表达式 算术运算符: +、-、*、/ 比较运算符: 、=、、=、==和!= 输入语句:read语句 输出语句:write语句 注释语句:用“/*”和“*/”括起来,但注释不能嵌套。 二、TEST编译器 三、TEST机 习题 (p11) 1、词法分析程序(又称扫描器) 词法分析依次读入源程序中的每个字符,依据语言的构词规则,识别出一个个具有独立意义的最小语法单位,即“单词”,并用整数码或有意义的记号来表示每个单词的词性是保留字、标识符、分界符、运算符或常数。 例如,表达式a=10+c*20的词法分析结果如右表所示。

文档评论(0)

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

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

1亿VIP精品文档

相关文档