欢迎来到天天文库
浏览记录
ID:41186175
大小:596.01 KB
页数:88页
时间:2019-08-18
《《引论及文法》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译原理任课教师:周长敏第一章编译程序概论1.1什么是编译程序1.2编译过程概述1.3编译程序的结构1.4编译阶段的组合1.5编译技术和软件工具1.1什么是编译程序一个编译程序就是一个语言翻译程序。它把一种语言(称作源程序)书写的程序翻译成另一种语言(称作目标语言)的等价的程序高级语言程序(源程序)编译程序低级语言程序1.1什么是编译程序1.2编译过程概述词法分析语法分析语义分析中间代码生成代码优化目标代码生成编译过程概述词法分析阶段这个阶段的任务是从左到右一个字符一个字符地读入源程序对构成源程序的字符流进行扫描和分解。词法分析
2、一个C源程序片断:inta;a=a+2;单词类型单词值保留字int标识符(变量名)a界符;标识符(变量名)a算符(赋值)=标识符(变量名)a算符(加)+整数2界符;语法分析语法分析的任务是在词法分析的基础依据源程序的语法规则把源程序的单词序列组成语法短语(表示成语法树或其他的内部码).通过语法分析确定整个输入串是否构成一个语法上正确的程序.语义分析阶段审查源程序有无语义错误,为代码生成阶段收集类型信息。如类型检查、强制类型转换、检查数组下标等。例如:整型数据+实型数据……中间代码生成在语义分析之后,将源程序表示成一种内部表示形式
3、。“中间代码”是一种结构简单、含义明确的记号系统。很多编译程序采用了一种近似“三地址指令”的“四元式”。四元式的形式为(运算符,运算对象1,运算对象2,结果)代码优化此阶段的任务是对前阶段产生的中间代码进行变换或进行改造,目的是使生成的目标代码更为高效。目标代码生成这一阶段的任务是把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编代码。编译程序的结构词法分析程序语法分析程序语义分析程序中间代码生成程序代码优化程序目标代码生成程序出错处理程序表格管理程序1.4编译阶段的组合编译过程的前端(frontend)词法分析
4、、语法分析、语义分析和中间代码生成等编译过程的后端(backend)目标代码生成等1.5编译技术和软件工具语言的结构化编辑器语言程序的调试工具语言程序测试工具高级语言之间的转换工具并行编译技术练习题:1._____是两类程序语言处理程序。A.高级语言程序和低级语言程序B.解释程序和编译程序C.编译程序和操作系统D.系统程序和应用程序2、高级语言编写的程序经编译后产生的程序叫_____。A.源程序B.目标程序C.连接程序D.解释程序3、编译程序是一种常用的_________软件。A.应用B.系统C.工具D.测试4、对编译程序而言,
5、输入数据是_______,输出结果是________。5、画出编译程序的总体结构图,简述各部分的主要功能。6、课本P11-12页,第一章练习题第1-4题。编译程序用来翻译高级语言编写的源程序正如翻译英文一样,要先学习英语的单词和语法!语法(文法):描述句子的构成规则。(例:句子=主语+谓语)只需要一些简单的规则就可以概括中文句子的结构。那么高级程序语言如何用简单的规则来表示呢?课前思考:描述程序语言的符号系统第三章文法和语言所谓一个程序语言的文法是指一组规则,用它可以形成和产生一个合适的程序。3.1文法的直观概念3.2符号和符号
6、串3.3文法和语言的形式定义3.4文法的类型3.5上下文无关文法及其语法树3.6句型的分析3.7有关文法实用中的一些说明<句子>∷=<主语><谓语><主语>∷=<代词>
7、<名词><代词>∷=我
8、你
9、他<名词>∷=王明
10、大学生
11、工人
12、英语<谓语>∷=<动词><直接宾语><动词>∷=是
13、学习<直接宾语>∷=<代词>
14、<名词>3.1文法的直观概念有了以上规则,即可推导出(产生)句子寻找∷=左端的带有<句子>的规则并把它表示成∷=右端的符号串,这个动作表示成:<句子>=><主语><谓语>,然后再得到的串<主语><谓语>中,选取<主语>或
15、<谓语>,再用相应的规则∷=右端代替,重复下去,得到句子。“我是大学生”的推导过程<句子>=><主语><谓语>=><代词><谓语>=>我<谓语>=>我<动词><直接宾语>=>我是<直接宾语>=>我是<名词>=>我是大学生同样,还可以推导出“王明是大学生”,“我学习英语”……等无数句子。因此可以说:文法是以有穷集合刻画无穷集合的一种工具。规则集句子集合C语言的基本符号有if,while,for,…,字母、数字和+、-、(、)、>=等分界符,由这些符号组成的各种可能序列的符号串构成一个无穷的集合,而C语言就是这个集合的子集。英语的基
16、本符号有26个字母和一些标点符号,由这些基本符号所组成的各种可能序列的符号串构成一个无穷的集合,而英语就是这个集合的子集。3.2符号和符号串字母表:元素的非空有穷集合,字母表中的元素又称为符号,因此字母表也称为符号表(语言的基本符号集合)符号串:由字母表中的符号
此文档下载收益归作者所有