编译原理语法1(文法和语言).ppt
《编译原理语法1(文法和语言).ppt》由会员分享,可在线阅读,更多相关《编译原理语法1(文法和语言).ppt(37页珍藏版)》请在三一办公上搜索。
1、第 4 讲,编译原理,西北农林科技大学本科教程,主讲教师:赵建邦,第三章 语法分析,3.1 文法和语言3.2 推导与语法树3.3 自顶向下的语法分析3.4 自底向上的语法分析3.5 规范规约的自底向上语法分析方法,第三章语法分析3.1 文法和语言文法和语言的基本概念形式语言分类(4类)正规表达式与上下文无关文法重点掌握文法的表示,本讲目标,定位语法分析是编译过程的第二个阶段,也是核心部分任务根据语言的语法规则对单词序列进行语法分析,识别合法的语法单位(如表达式、语句、程序段等),若不存在语法错误则给出正确的语法结构(语法树)理论依据:上下文无关文法方法自顶向下分析(推导:开始符号 句子)自底向
2、上分析(规约:句子 开始符号),语法分析:,英语语法结构,3.1 文法和语言,文法(Grammar)是程序语言的生成系统,用文法可以精确定义一个语言,并依据该文法构造出识别这个语言的自动机文法对程序语言和编译程序的构造具有重要意义,如程序语言的词法可用正规文法描述,语法可用上下文无关文法描述,而语义则要借助于上下文有关文法描述,3.1 文法和语言,3.1.1 文法和语言的基本概念1、语言通常我们用表示字母表,字母表中的每个元素称为字符或符号。不同语言的字母表可能是不同的,程序语言的字母表通常是ASCII字符集。由字母表中的字符所组成的有穷系列称为上的字符串或字,字母表上的所有字符串(包括空串)
3、组成的集合用*表示。那么,对字母表来说,*上的任意一个子集都称为上的一个语言,记为L(),该语言的每一个字符串称为语言L的一个语句或句子。,3.1 文法和语言,3.1.1 文法和语言的基本概念1、语言,例如,设=a,b,c,则:L=,a,aa,ab,aaa,aab,aba,abb,为上的一个语言。如果a表示字母,b表示数字,c看做其它符号,则L即是程序语言中的标识符集,其中的每个标识符就是标识符集中的一个句子。,3.1 文法和语言,3.1.1 文法和语言的基本概念2、文法(定义)文法通常表示成四元组GS=(VT,VN,S,):(1)VT为终结符号集,这是一个非空有限集,它的每个元素称为终结符号
4、。(2)VN为非终结符号集,它也是一个非空有限集,其每个元素称为非终结符号,且有VTVN=;(3)S为文法开始符,是一个特殊的非终结符号,即SVN;,3.1 文法和语言,3.1.1 文法和语言的基本概念2、文法(定义)文法通常表示成四元组GS=(VT,VN,S,):(4)是产生式的非空有限集,其中每个产生式(或称规则)是一序偶(,),通常写作 或:=读作“产生”、“是”或“定义为”。在此,为产生式的左部,而为产生式的右部,、是由终结符和非终结符组成的符号串,(VTVN)+且至少有一个非终结符,而(VTVN)*。,3.1 文法和语言,3.1.1 文法和语言的基本概念2、文法(文法中的基本概念)终
5、结符号:是指语言不可再分的基本符号,通常是一个语言的字母表;终结符代表了语法的最小元素,是一种个体记号。非终结符号:也称语法变量,它代表语法实体或语法范畴;非终结符代表一个特定的语法概念,因此,一个非终结符是一个类、一个集合。,注意:1、字母表可以称为文法中的终结符集2、非终结符不能是字母表中的字符,3.1 文法和语言,3.1.1 文法和语言的基本概念2、文法(文法中的基本概念)文法开始符号S:是一个特殊的非终结符,它代表文法所定义的语言中我们最终感兴趣的语法实体,即语言的目标,而其它语法实体只是构造语言目标的中间变量产生式:(也称产生规则或规则)是定义语法实体的一种书写规则。一个语法实体的相
6、关规则可能不止一个。,P1P2 Pn,如果:,P1|2|n,其中,每个i(i=1,2,n)称为P的一个候选式,直竖“|”读为“或”,它与“”一样是用来描述文法的元语言符号(即不属于的字符)。,3.1 文法和语言,可以写成:,例如,定义一个仅包含加和乘运算的表达式的文法GE:GS=(VT,VN,S,):VT=+*()i VN=E,T,F S=E 为以下产生式的集合:EE+T|T TT*F|F F(E)|i两种文法都可以识别包含加和乘运算的表达式,它们的区别将在后面的课程中讲解,VT=+*()iVN=ES=E:E E+E E E*E E(E)E i,3.1 文法和语言,或者::Ei|E+E|E*E
7、|(E),3.1.1 文法和语言的基本概念 关于文法表示的约定:在此后的讨论中,用大写字母A、B、S、E等表示非终结符,用小写字母a、b、i、j等表示终结符,并用希腊字母等表示文法符号串,即、等均属于(VTVN)*。,2.3 正规表达式与优先自动机简介,例3.1 试构造产生标识符的文法。解答 首先,标识符是以字母开头的字母数字串,用L表示“字母”类非终结符,用D表示“数字”类非终结符,,TL|D(单个的字母或数字字符),ST|ST(字母或数字串),La|b|zD0|1|9,而用T表示“字母或数字”类非终结符,则有:,其中,产生式ST|ST是一种左递归形式,由它可以产生一串T,课本例题,IL|L
8、S(标识符),因此,产生标识符的文法GI为:GI=(VT,VN,I,):,课本例题,VT=a,b,z,0,9,VN=I,S,T,L,D,:IL|LS ST|ST TL|D La|b|z D0|1|9,S=I,解答 根据题意,将奇数划分为三个部分:,例3.2 写一文法,使其语言是奇数集合,但不允许出现以0打头的奇数。,课本例题,最高位允许出现19,用非终结符B表示;,最低位1、3、5、7、9等奇数,用A表示;,中间位可以是09,每位用D表示。,A1|3|5|7|9,B1|2|3|4|5|6|7|8|9,D0|B,课本例题,针对两位以上的奇数,用M表示十位以上的数字位:,M B|MD,奇数,用N表
9、示,包括一位的奇数与两位以上的奇数:,N A|MA,所以,不允许出现以0打头的奇数集合文法GN为:,课本例题,GN=(VT,VN,N,):,VT=0,1,9,:N A|MA M B|MD B 1|2|3|4|5|6|7|8|9 A 1|3|5|7|9 D 0|B,VN=N,A,M,B,D,S=N,3.1 文法和语言,3.1.1 文法和语言的基本概念3、文法产生的语言设文法GS=(VT,VN,S,),且、(VTVN)*,如果存在产生式A(VTVN)*),则称A可直接推出,即其中“=”表示直接推导,是应用产生规则进行推导的记号,这里仅使用一次规则注意“=”与“”不同,“”是产生式中的定义记号。直接
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 语法 文法 语言
链接地址:https://www.31ppt.com/p-6016579.html