如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
编译原理课程安排成绩评定问题与建议学好这门课的建议课程主要内容编译原理与技术的重要性张素琴等,编译原理(第2版),清华大学出版社,2005年何炎详等,编译原理,高等教育出版社,2004年陈火旺等,程序设计语言编译原理(第3版),国防工业出版社,2006年Alfredetc.,Compilers:Principle,TechniquesandTools,SecondEdition,人民邮电出版社,2008年编译原理(第2版),赵建华等译,机械工业出版社,2009年Andrewetc.,ModernComplierImplementationinC,人民邮电出版社,2005年现代编译原理(C语言描述),赵克佳等译,人民邮电出版社,2006年绪论——什么是编译程序?为什么需要编译程序?程序设计语言的发展解释翻译编译——特殊的翻译编译系统编译系统高级语言编写的源代码汇编语言或机器代码汇编代码的优化编译器的基本原则如何翻译编译程序的逻辑结构模块分类词法分析输入字符串:“position=initial+rate*60”,即‘p’,‘o’,‘s’,‘i’,‘t’,‘i’,‘o’,‘n’,‘’,‘=’,‘’,‘i’,‘n’,‘i’,‘t’,‘i’,‘a’,‘l’,‘’,‘+’,‘’,‘r’,‘a’,‘t’,‘e’,‘*’,‘6’,‘0’,经过词法分析,得到下述词(Token):标识符:position,initial,rate赋值运算符:=加法运算符:+乘法运算符:*数:60语法分析赋值语句程序的语法结构通常由递归规则定义:规则1:任何<标识符>是<表达式>规则2:任何<数>是<表达式>给定<表达式1>和<表达式2>,则下述也是表达式规则3:<表达式1>+<表达式2>规则4:<表达式1>*<表达式2>规则5:(<表达式1>)语义分析检查是否存在语义错误,获取类型信息。类型检查中间代码可看作是一种抽象机上的程序,如GCC产生的中间代码,JavaByte代码。重要特性:简单规范,机器无关,容易从语义分析阶段产生,并且容易翻译到目标代码。中间代码有多种表示形式。逆波兰式(后缀表达式)四元组三地址码,最多三个操作数三元组两地址码,最多两个操作数流控和过程调用中间代码生成中间代码生成对中间代码的优化处理:对代码进行等价变换以求提高执行效率,即提高运行速度、节省存储空间与机器无关的优化与机器有关的优化与机器无关的优化与机器有关的优化目标代码生成符号表,记录符号与其关联的属性,如类型、作用域,对于过程名符号,有其参数个数和类型、传值还是传引用、返回类型。符号在词法分析阶段进入符号表,而与其关联的属性要在后继阶段补充。floatposition,initial,rate;在遇到错误时,应尽可能继续执行相应阶段。词法分析:不成词的余留串,如3int语义分析:语法结构良好,但语义错误,如两个标识符相加,但其类型分别为数组和过程。编译程序的组织编译的遍(Pass)编译的前端与后端编译程序的设计T形图交叉编译(CrossCompiling)/移植C语言本机编译器的利用问题三:直接在一个机上实现C语言编译器,还有别的技术么?解决:用汇编语言实现一个C子集的编译程序(P0—人)用汇编程序处理该程序,得到P2(P2:可直接运行)用C子集编制C语言的编译程序(P3—人)用P2编译P3,得到P41.用汇编语言实现一个C子集的编译程序(P0—人)利用编译程序自动生成器语法分析器的自动生成程序第1章小结——问题如果已有C(32位)的编译器,应如何开发C++(32位)的编译器更省力?如果是C(64位)呢?