《引论及文法》PPT课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《《引论及文法》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《引论及文法》PPT课件.ppt(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译原理编译原理任课教师:周长敏任课教师:周长敏任课教师:周长敏任课教师:周长敏第一章第一章编译程序概论编译程序概论1.1什么是编译程序什么是编译程序1.2编译过程概述编译过程概述1.3编译程序的结构编译程序的结构1.4编译阶段的组合编译阶段的组合1.5编译技术和软件工具编译技术和软件工具1.1什么是编译程序什么是编译程序一个编译程序就是一个语言翻译程序。它把一种语言一个编译程序就是一个语言翻译程序。它把一种语言(称作源程序)书写的程序翻译成另一种语言(称作目(称作源程序)书写的程序翻译成另一种语言(称作目标语言)的等价的程序标语言)的等价的程序 高级语言高级语言程序程序(源程序源程序)编译程
2、序编译程序低级语言程序低级语言程序低级语言程序低级语言程序1.1什么是编译程序什么是编译程序1.2编译过程概述编译过程概述词法分析词法分析语法分析语法分析语义分析语义分析中间代码生成中间代码生成代码优化代码优化目标代码生成目标代码生成编译过程概述编译过程概述词法分析阶段词法分析阶段这个阶段的任务是从左到右一个字符一个这个阶段的任务是从左到右一个字符一个字符地读入源程序对构成源程序的字符流字符地读入源程序对构成源程序的字符流进行扫描和分解。进行扫描和分解。词法分析词法分析一个一个C C源程序片断:源程序片断:int a int a;a=a+2;a=a+2;单词类型单词类型 单词值单词值 保留字保
3、留字 int int标识符标识符(变量名变量名)a a界符界符 ;标识符标识符(变量名变量名)a)a算符算符(赋值赋值)=标识符标识符(变量名变量名)a)a 算符算符(加加)+整数整数 2 2界符界符 ;语法分析语法分析语法分析的任务是在词法分析的基础语法分析的任务是在词法分析的基础依据源程序依据源程序的语法规则把源程序的单词序列组成语法短语的语法规则把源程序的单词序列组成语法短语(表示成语法树或其他的内部码表示成语法树或其他的内部码).).通过语法分析通过语法分析确定整个输入串是否构成一个语法上正确的程序确定整个输入串是否构成一个语法上正确的程序.语义分析阶段语义分析阶段审查源程序有无语义错
4、误,为代码生成阶审查源程序有无语义错误,为代码生成阶段收集类型信息。如类型检查、强制类型段收集类型信息。如类型检查、强制类型转换、检查数组下标等。转换、检查数组下标等。例如:整型数据例如:整型数据+实型数据实型数据中间代码生成中间代码生成在语义分析之后,将源程序表示成一种内在语义分析之后,将源程序表示成一种内部表示形式。部表示形式。“中间代码中间代码”是一种结构简单、含义明确是一种结构简单、含义明确的记号系统。很多编译程序采用了一种近的记号系统。很多编译程序采用了一种近似似“三地址指令三地址指令”的的“四元式四元式”。四元式的形式为四元式的形式为(运算符,运算对象(运算符,运算对象1,运,运算
5、对象算对象2,结果),结果)代码优化代码优化此阶段的任务是对前阶段产生的中间代码此阶段的任务是对前阶段产生的中间代码进行变换或进行改造,目的是使生成的目进行变换或进行改造,目的是使生成的目标代码更为高效。标代码更为高效。目标代码生成目标代码生成这一阶段的任务是把中间代码变换成特定这一阶段的任务是把中间代码变换成特定机器上的绝对指令代码或可重定位的指令机器上的绝对指令代码或可重定位的指令代码或汇编代码。代码或汇编代码。编译程序的结构编译程序的结构词法分析程序词法分析程序语法分析程序语法分析程序语义分析程序语义分析程序中间代码生成程序中间代码生成程序代码优化程序代码优化程序目标代码生成程序目标代码
6、生成程序出错处理程序出错处理程序表格管理程序表格管理程序1.4编译阶段的组合编译阶段的组合编译过程的前端(编译过程的前端(frontend)词法分析、语法分析、语义分析和中间代码生成词法分析、语法分析、语义分析和中间代码生成等等编译过程的后端编译过程的后端(backend)目标代码生成等目标代码生成等1.5编译技术和软件工具编译技术和软件工具语言的结构化编辑器语言的结构化编辑器语言程序的调试工具语言程序的调试工具语言程序测试工具语言程序测试工具高级语言之间的转换工具高级语言之间的转换工具并行编译技术并行编译技术练习题:练习题:1_是两类程序语言处理程序。是两类程序语言处理程序。A高级语言程序和
7、低级语言程序高级语言程序和低级语言程序B解释程序和编译程序解释程序和编译程序C编译程序和操作系统编译程序和操作系统D系统程序和应用程序系统程序和应用程序2、高级语言编写的程序经编译后产生的程序叫、高级语言编写的程序经编译后产生的程序叫_。A源程序源程序B目标程序目标程序C连接程序连接程序D解释程序解释程序3、编译程序是一种常用的、编译程序是一种常用的_软件。软件。A.应用应用B.系统系统C.工具工具D.测试测试4、对编译程序而言,输入数据是、对编译程序而言,输入数据是_,输出结果是输出结果是_。5、画出编译程序的总体结构图,简述各部分的主要功能。、画出编译程序的总体结构图,简述各部分的主要功能
8、。6、课本、课本P11-12页,第一章练习题第页,第一章练习题第1-4题。题。编译程序用来编译程序用来翻译翻译高级语言编写的源程序高级语言编写的源程序正如正如翻译英文翻译英文一样,要先学习英语的一样,要先学习英语的单词单词和和语法语法!语法(文法)语法(文法):描述句子的构成规则。(例:句子描述句子的构成规则。(例:句子主语主语+谓语谓语)只需要一些)只需要一些简单的规则简单的规则就可以概括就可以概括中文句子的结构。中文句子的结构。那么高级程序语言如何用那么高级程序语言如何用简单的规则简单的规则来表示呢?来表示呢?课前思考:课前思考:描述程序语言的符号系统 第三章第三章 文法和语言文法和语言所
9、谓一个程序语言的文法是指一组规则,所谓一个程序语言的文法是指一组规则,用它可以形成和产生一个合适的程序。用它可以形成和产生一个合适的程序。3.1 3.1 文法的直观概念文法的直观概念3.2 3.2 符号和符号串符号和符号串3.3 3.3 文法和语言的形式定义文法和语言的形式定义3.4 3.4 文法的类型文法的类型3.5 3.5 上下文无关文法及其语法树上下文无关文法及其语法树3.6 3.6 句型的分析句型的分析3.7 3.7 有关文法实用中的一些说明有关文法实用中的一些说明 =|=我我|你你|他他 =王明王明|大学生大学生|工人工人|英语英语 =是是|学习学习 =|3.1文法的直观概念文法的直
10、观概念有了以上规则,即可推导出(产生)句子有了以上规则,即可推导出(产生)句子有了以上规则,即可推导出(产生)句子有了以上规则,即可推导出(产生)句子 寻找寻找=左端的带有左端的带有 的规则并把的规则并把它表示成它表示成=右端的符号串,这个动作表示右端的符号串,这个动作表示成:成:=,然后再得,然后再得到的串到的串 中,选取中,选取 或或 ,再用相应的规则,再用相应的规则=右端代替,重复右端代替,重复下去,得到句子。下去,得到句子。“我是大学生我是大学生”的推导过程的推导过程=我我我我 =我我我我 =我是我是我是我是 =我是我是我是我是 =我是大学生我是大学生我是大学生我是大学生同样,还可以推
11、导出同样,还可以推导出同样,还可以推导出同样,还可以推导出“王明是大学生王明是大学生王明是大学生王明是大学生”,“我学习英我学习英我学习英我学习英语语语语”等无数句子。因此可以说:等无数句子。因此可以说:等无数句子。因此可以说:等无数句子。因此可以说:文法文法文法文法是以是以是以是以有穷集合有穷集合有穷集合有穷集合刻画刻画刻画刻画无穷集合无穷集合无穷集合无穷集合的一种工具。的一种工具。的一种工具。的一种工具。规则集规则集句子集合句子集合C C语言的基本符号有语言的基本符号有if,while,forif,while,for,字母、数字和字母、数字和+、-、(、)、(、)、=等分界符,由这些符号组
12、成的各种等分界符,由这些符号组成的各种可能序列的符号串构成一个无穷的集合,而可能序列的符号串构成一个无穷的集合,而C C语言就语言就是这个集合的子集。是这个集合的子集。英语的基本符号有英语的基本符号有2626个字母和一些标点符号个字母和一些标点符号,由这,由这些基本符号所组成的各种可能序列的符号串构成一个些基本符号所组成的各种可能序列的符号串构成一个无穷的集合,而英语就是这个集合的子集。无穷的集合,而英语就是这个集合的子集。3.2符号和符号串符号和符号串 字母表字母表:元素的非空有穷集合,字母表中的:元素的非空有穷集合,字母表中的元素又称为符号,因此字母表也称为符号表元素又称为符号,因此字母表
13、也称为符号表(语(语言的基本符号集合)言的基本符号集合)符号串符号串:由字母表中的符号组成的任何有穷:由字母表中的符号组成的任何有穷序列称为符号串序列称为符号串(各种句子)(各种句子)=0 =0,1 1 符号串有符号串有01 11 1001 11 10 A=a A=a,b b,c c 符号串有符号串有a a,b b,c c,abab,aacaaaca3.2符号和符号串符号和符号串任何一种语言都是由该语言的任何一种语言都是由该语言的基本符号基本符号所组成的符所组成的符号串集合的子集。号串集合的子集。符号串符号串符号顺序不同,符号串不同符号顺序不同,符号串不同 ab ab和和baba不同不同可以使
14、用字母表示符号串可以使用字母表示符号串 x=STR x=STR符号串的长度:符号串的长度:如果某符号串如果某符号串x x中有中有m m个符号,则个符号,则其长度为其长度为m m,表示为,表示为|x|=m|x|=m 001110 001110的长度为的长度为6 6空符号串:空符号串:即不包含任何符号的符号串,用即不包含任何符号的符号串,用表表示,长度为示,长度为0 0,即,即|=0|=0符号串的运算符号串的运算符号串的头尾,固有头和固有尾:符号串的头尾,固有头和固有尾:如果如果z=xyz=xy是一符号串,那么是一符号串,那么x x是是z z的头,的头,y y是是z z的尾,如果的尾,如果x x是
15、非空是非空的,那么的,那么y y是固有尾;同样如是固有尾;同样如果果y y非空非空,那么,那么x x是固有头是固有头 设设z=abcz=abc,那么,那么 z z的头(前缀):的头(前缀):,a a,abab,abcabc 固有头:固有头:,a a,abab 尾(后缀):尾(后缀):,c c,bcbc,abcabc 固有尾:固有尾:,c c,bcbcZ=aabb,Z=aabb,求符号串求符号串Z Z的头尾,固有头和固有尾的头尾,固有头和固有尾练习:练习:符号串的省略写法符号串的省略写法省略写法:省略写法:强调头:强调头:z=xz=x 强调某符号在符号串中某处出现:强调某符号在符号串中某处出现:
16、z=xz=x 强调符号是符号串的第一个符号:强调符号是符号串的第一个符号:z=az=a符号串的运算符号串的运算符号串的连接:符号串的连接:设设x x和和y y是符号串,他们的连接是符号串,他们的连接xyxy是把是把y y的符号写在的符号写在x x的符号之后得到的符号串的符号之后得到的符号串 x=ST x=ST,y=abuy=abu xy=STabu xy=STabu|x|=2|x|=2,|y|=3|y|=3,|xy|=5|xy|=5 特殊的连接:特殊的连接:x=x=xx=x=x 符号串的运算符号串的运算符号串的方幂:符号串的方幂:设设x x是符号串,把是符号串,把x x自身连接自身连接n n次
17、得到符号串次得到符号串z z,即,即z=xxxxz=xxxx,称为符号串,称为符号串x x的的方幂方幂,写作,写作z=xz=xn n,即把符号串即把符号串x x相继地重复写相继地重复写n n次次 x x0 0=,x x1 1=x=x,x x2 2=xx=xx,x x3 3=xxx=xxx x=AB x=AB,x x0 0=,x x1 1=AB=AB,x x2 2=ABAB=ABAB,x x3 3=ABABAB=ABABAB 对于对于n0n0,有,有x xn n=xx=xxn-1n-1=x=xn-1n-1x x符号串的运算符号串的运算符号串集合:符号串集合:符号串集合:符号串集合:若集合若集合若
18、集合若集合A A A A中的一切元素都是某字母中的一切元素都是某字母中的一切元素都是某字母中的一切元素都是某字母表上的符号串,则称表上的符号串,则称表上的符号串,则称表上的符号串,则称A A A A为该字母表上的符号串集为该字母表上的符号串集为该字母表上的符号串集为该字母表上的符号串集合合合合(简单说法:由许多符号串组成的集合)(简单说法:由许多符号串组成的集合)(简单说法:由许多符号串组成的集合)(简单说法:由许多符号串组成的集合)例如:两个符号串集合例如:两个符号串集合例如:两个符号串集合例如:两个符号串集合A A A A和和和和B B B B的乘积表示为:的乘积表示为:的乘积表示为:的乘
19、积表示为:AB=xy|xA AB=xy|xA AB=xy|xA AB=xy|xA且且且且yByByByB,即,即,即,即ABABABAB是满足是满足是满足是满足x x x x属于属于属于属于A A A A,y y y y属属属属于于于于B B B B的所有符号串的所有符号串的所有符号串的所有符号串xyxyxyxy所组成的集合所组成的集合所组成的集合所组成的集合符号串的运算符号串的运算例如:例如:例如:例如:A=aA=aA=aA=a,bbbb,B=cB=cB=cB=c,dddd 则集合则集合则集合则集合AB=acAB=acAB=acAB=ac,adadadad,bcbcbcbc,bdbdbdbd
20、对任意符号串对任意符号串对任意符号串对任意符号串x x x x,有,有,有,有x=x=xx=x=xx=x=xx=x=x,所以有,所以有,所以有,所以有A=A=AA=A=AA=A=AA=A=A*:表示字母表表示字母表表示字母表表示字母表上的所有有穷长的串的集合上的所有有穷长的串的集合上的所有有穷长的串的集合上的所有有穷长的串的集合 =0 =0 =0 =0,1111,即,即,即,即*=,0 0 0 0,1 1 1 1,00000000,01010101,10101010,11111111,000000000000,001001001001,010010010010,符号串的运算符号串的运算也可将也
21、可将*表示为字母表表示为字母表的方幂形式:的方幂形式:*=0 01 12 2n n*称为集合称为集合的的闭包闭包 +=1 12 2n n称为集合称为集合的的正闭包正闭包显然显然 有有*=0 0+,+=*=*(试证试证明看?)明看?)集合的正闭包和集合的闭包集合的正闭包和集合的闭包集合集合的闭包比正闭包多个的闭包比正闭包多个!3.3 3.3 文法和语言的形式定义文法和语言的形式定义=|=我我|你你|他他=王明王明|大学生大学生|工人工人|英语英语=是是|学习学习=|=我我=我我=我是我是=我是我是=我是大学生我是大学生非终结符非终结符终结符终结符产生式产生式开始符号开始符号终结符号:终结符号:是
22、一个语言不可再分的基本符号,如:标示是一个语言不可再分的基本符号,如:标示符、常数、算符、界符等。符、常数、算符、界符等。非终结符号:非终结符号:用来代表语法范畴,是由终结符号和非终用来代表语法范畴,是由终结符号和非终结符号组成的符号串,如:表达式、语句、子程序、函结符号组成的符号串,如:表达式、语句、子程序、函数等。数等。开始符号:开始符号:是一个特殊的非终结符号,代表语言中我们是一个特殊的非终结符号,代表语言中我们最感兴趣的语法范畴。最感兴趣的语法范畴。产生式:产生式:也称规则也称规则3.3 3.3 文法和语言的形式定义文法和语言的形式定义文法即是用规则(产生式)来描述语言:文法即是用规则
23、(产生式)来描述语言:语语言中的每个句子可以用严格定义的规则来言中的每个句子可以用严格定义的规则来构造构造文法的定义文法的定义推导的概念推导的概念句型、句子和语言的定义句型、句子和语言的定义3.3 3.3 文法和语言的形式定义文法和语言的形式定义规则:也称为重写规则、产生式或生成式规则:也称为重写规则、产生式或生成式是形如是形如 或或=的的(,)有序对有序对其中其中 称为规则的左部,称为规则的左部,称为规则的右部。称为规则的右部。或或=读作读作“定义为定义为”例如:例如:A Aaa文法文法G G定义为四元组定义为四元组(V(VN N,V VT T,P P,S)S)其中其中 V VN N:非终结
24、符号非终结符号(或语法实体,或变量或语法实体,或变量)集;集;V VT T:终结符号集;构成语言文法的单词,是语法成分的最小单终结符号集;构成语言文法的单词,是语法成分的最小单位。位。P P:规则规则()的集合,的集合,(V VN N VVT T )*,且至少包含一个非,且至少包含一个非终结符,终结符,(V VN N VVT T )*;S S:称作识别符号或开始符号的一个非终结符,它至少要在一称作识别符号或开始符号的一个非终结符,它至少要在一条产生式中作为左部出现。条产生式中作为左部出现。V VN N,V VT T和和P P是非空有穷集。是非空有穷集。V VN N和和V VT T不含公共的元素
25、即不含公共的元素即VN VT=用用V V表示表示V VN N V VT T ,称为文法,称为文法G G的字母表或字汇表的字母表或字汇表文法的定义文法的定义文法的定义文法的定义例例 文法文法G=G=(V VN N,V VT T,P P,S S)V VN N=S,V=S,VT T=0,1 =0,1 P=S0S1,S01 P=S0S1,S01 S S为开始符号为开始符号文法的写法文法的写法(1)G(1)G:SaAb SaAb Aab Aab AaAb AaAb A A(2)GS(2)GS:SaSb SaSb Aab Aab AaAb AaAb A A (3)GS:SaSb(3)GS:SaSb Aab
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 引论及文法 引论 文法 PPT 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内