编译原理史晟辉shishenghui@sina.com课程简介先行课程:高等数学、C(PASCAL)、离散数学、汇编语言、数据结构编译原理课程应用领域编译器的设计一般的软件设计例如:文本编辑器、信息检索系统、模式识别器排版、绘图系统程序验证器编译原理吕映芝清华大学出版社编译程序设计原理杜淑敏等北京大学出版社编译原理李赣生等清华大学出版社编译程序构造原理和实现技术金成植高等教育出版社程序设计语言编译程序陈火旺等国防工业出版社CompilerConstructionPrincipleandPratice编译原理及实践KennethC.Louden机械工业出版社参考书籍参考书籍Return://edu.netbig.com/kaoyan/e4/245/20000524/gong.htm参考网站平时成绩+上机成绩+考卷成绩考试成绩编译原理第一章编译程序概述第二章一个微小编译器第三章文法和语言第四章词法分析第五章自顶向下语法分析方法第六章自底向上优先分析方法第七章LR分析方法第八章语法制导翻译和中间代码生成第九章符号表第一○章代码优化第一一章代码生成第一章编译程序概述1.1什么是编译程序1.2编译程序的结构1.3编译程序的设计实现1.4经典的编译程序过程式语言Fortran,Pascal,C函数式语言Lisp逻辑式语言Prolog对象式语言C++汇编语言机器语言第一章编译程序概述1.1什么是编译程序1.程序设计语言程序设计语言高级语言低级语言:面向机器的语言2.翻译和解释程序(1)翻译和编译程序编译:如果一个翻译程序的源语言是某种高级语言,其目标语言是相对于某一计算机的汇编语言或机器语言,则称这种翻译程序为编译程序(或称为编译器)。翻译:是指在计算机中放置一个能由计算机直接执行的翻译程序,它以某一种程序设计语言(源语言)所编写的程序(源程序)作为翻译或加工的对象,当计算机执行翻译程序时,就将它翻译为与之等价的另一种语言(目标语言)的程序(目标程序)。输入输出(2)编译和解释程序目标程序源程序编译程序初始数据计算结果源程序解释程序初始数据计算结果功能工作结果实现技术上解释程序源程序的一个执行系统源程序的执行结果执行中间代码编译程序源程序的一个转换系统源程序的目标代码把中间代码转换成目标程序解释程序和编译程序的区别解释程序和编译程序的根本区别:是否生成目标代码翻译外文资料编译源程序分析阅读原文识别单词分析句子输入并扫描源程序词法分析语法分析综合修辞加工写出译文代码优化目标代码生成1.2编译程序的结构翻译外文资料与编译源程序进行类比编译程序的功能和组织结构表处理词法分析源程序目标程序错误处理语法分析语义分析目标代码生成前端后端中间代码优化中间代码生成编译程序的前端:与源语言有关,而与目标机无关的编译程序编译程序的后端:与目标机有关,而与源语言无关的编译程序遍(趟):是对源程序或源程序的中间结果从头到尾扫描一遍,并作有关加工处理,生成新的中间结果或目标程序。宿主机:运行编译程序的计算机称为宿主机。目标机:运行编译程序所产生的目标代码的计算机成为目标机。相关概念设计和实现一个编译程序,必须精通:•源语言•目标语言•编译方法要求:C语言实现编译程序的开发1.3编译程序的设计实现开发编译程序的途径:•预处理法•移植法•自展法•工具法•理论法1.4经典的编译程序Pascal编译程序C编译程序Fortran编译程序