Chapt1_编译概述_11.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Chapt1_编译概述_11

编译原理及实现 任课教师:韦艳艳 E-mail:weiyy2001@ 学习这门课程的意义 经典课程,修炼专业“内功”。 品味编译技术解决问题的思路与方法。 最实在的---学分 编译原理---课前思考 为什么有些语言规定标识符不能超过8个字符?而有些语言对标识符的长度无限制? 为什么有些语言能实现递归,而有些语言不能? C语言规定数组下界为0,上界为声明的数减1,为什么? 嵌套的IF语句规定ELSE与上面最近的IF配对,为什么? 为什么有些程序运行一段时间后会导致内存溢出? 为什么Java实现了“一次编写,到处运行”(Write once, Run anywhere)?C#的工作机制? …… 各章内容 参考书目 对大家的要求 听课 --- 练习/作业 --- 课后复习 上课时让手机进入休息状态 不定期考勤 这一章的内容… 什么是程序设计语言 什么叫翻译程序 编译程序的组成 编译程序的结构 编译程序的前后处理器 TEST语言与编译器 回顾:程序与程序设计语言 程序:为实现特定目标或解决特定问题而用计算机语言编写的指令序列的集合。 常见的程序设计语言: C++, Java, C, FORTRAN, Pascal, Lisp, Basic, ML等 1.1 程序设计语言(p1) 1、机器语言(最低形式,属低级语言) 特点:程序指令用二进制代码直接表示,机器能直接识别和直接执行,但机器语言程序难写、难读、难修改,编程的工作量大,对程序员的要求高。 机器语言程序示例: 1.1 程序设计语言(p1) 2、汇编语言(属低级语言) 特点:用助记符表示机器指令,可读性提高,但依赖于具体的机器,机器不能直接识别和直接执行。 1.1 程序设计语言(p1) 3、高级语言 特点:接近于自然语言,因而容易学习和掌握,且编写程序效率高,编写出的程序易读、易理解、易修改、易移植,但机器不能直接识别和直接执行。 编译过程 自然语言的翻译(如把英文翻译为中文 ) 识别出句子中的一个个单词; 分析句子的语法结构; 根据句子的含义进行初步翻译; 对译文进行修饰; 写出最后的译文。 1.4 编译程序的结构(p7) 把编译程序分为前端和后端的优点是便于编译程序的构造和移植。 例如,有K种高级语言、L种目标机器,如果不分前端和后端,就需要建立K*L套编译程序,而分成前端和后端,只需要建立K(前端)+L(后端)套编译程序。 1.6 TEST语言与编译器(p10) 一、TEST语言 TEST语言程序是由一对花括号括起来的语句序列,它在语法上相当于C语言的函数体。 声明语句:只能是简单的整型变量 控制语句:if、while和for语句 表达式语句:布尔表达式和算术表达式 算术运算符: +、-、*、/ 比较运算符: 、=、、=、==和!= 输入语句:read语句 输出语句:write语句 注释语句:用“/*”和“*/”括起来,但注释不能嵌套。 二、TEST编译器 三、TEST机 习题 4、前端和后端(p8) C P B A B 中 间 语 言 一个TEST语言程序 { int i; int n; int j; j=1; read n; /*输入语句*/ for (i=1;i=n;i=i+1) j=j*i; write j; /*输出语句*/ } TEST编译器包括以下3个C文件: 1、TESTmain.c:主程序,先后调用词法分析、语法分析及语义分析和代码生成子程序。 2、TESTscan.c:词法分析子程序,接收用TEST语言编写的程序,输出的单词符号程序将作为语法分析的输入。 3、TESTparse.c:语法、语义分析及TEST机的汇编代码生成子程序,如果有错误,报告错误。 词

文档评论(0)

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

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

1亿VIP精品文档

相关文档