编译原理第2章文法和语言的基本知识课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《编译原理第2章文法和语言的基本知识课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 文法 语言 基本知识 课件
- 资源描述:
-
1、编编 译译 原原 理理2022年8月16日第第2 2章文法和语言的基本知识章文法和语言的基本知识1.1.本章是编译原理课程的理论基础,要求掌握形本章是编译原理课程的理论基础,要求掌握形式语言的基本术语和概念式语言的基本术语和概念,重点掌握重点掌握短语、直接短语、直接短语、句柄、素短语、规范推导、规范归约短语、句柄、素短语、规范推导、规范归约。2.2.掌握文法和语言的定义,掌握文法和语言的定义,文法的二义性文法的二义性与递归与递归性的判断方法及句型的分析方法,性的判断方法及句型的分析方法,文法分类文法分类。3.3.熟练使用文法定义程序设计语言的单词和语法熟练使用文法定义程序设计语言的单词和语法成
2、分。成分。4.4.对形式语言的理论有一个初步认识。对形式语言的理论有一个初步认识。教学目标教学目标编编 译译 原原 理理2022年8月16日 2.1 字母表和符号串的基本概念字母表和符号串的基本概念 2.2 文法和语言的形式定义文法和语言的形式定义 2.3 句型的分析句型的分析 2.4 文法和语言的分类文法和语言的分类教学内容教学内容编编 译译 原原 理理2022年8月16日 程序设计语言是一种形式语言,与自然语言既有相程序设计语言是一种形式语言,与自然语言既有相似的性质又有本质的不同。似的性质又有本质的不同。最主要的区别是:形式语言的规则简单、严格、最主要的区别是:形式语言的规则简单、严格、
3、无例外、无二义性。无例外、无二义性。编译程序的正确转换建立在对程序设计语言的精确编译程序的正确转换建立在对程序设计语言的精确定义和描述基础上。定义和描述基础上。语法语法文法是描述语言语法的形式规则文法是描述语言语法的形式规则语义语义语言中各语句的含义语言中各语句的含义语用语用从使用者的角度对语言的描述从使用者的角度对语言的描述编编 译译 原原 理理2022年8月16日字母表字母表:符号的非空有限集:符号的非空有限集 例:例:=00,11 2.12.1字母表和符号串字母表和符号串符号符号:字母表中的元素:字母表中的元素 例:例:0 0,1 1符号串符号串:由字母表中的符号组成的任何有穷序列:由字
4、母表中的符号组成的任何有穷序列 例:例:0,1,0,1,01,1001,10,011,011,.空符号串空符号串:无任何符号的符号串,用:无任何符号的符号串,用表示表示 C语言的字母表 Aa,b,0,1,9,+,_/,(,),=if,else,for.不对不对如如=if,else,for,while符号就是字符,对吗?符号就是字符,对吗?编编 译译 原原 理理2022年8月16日符号串的前缀和后缀符号串的前缀和后缀:从符号串从符号串s s的尾部删去若干个的尾部删去若干个(包括包括0 0个个)符号之后所余下的符号之后所余下的部分称为部分称为s s的前缀的前缀,0 0,0101及及011011都是
5、符号串都是符号串011011的前缀的前缀,1 1,1111及及011011都是符号串都是符号串011011的后缀的后缀符号串集合符号串集合:若集合:若集合A A中的一切元素都是某字母表上的符号中的一切元素都是某字母表上的符号串,则称串,则称A A为该字母表上的符号串集合。为该字母表上的符号串集合。例:例:=aa,b b,c A=a,aa,acc A=a,aa,ac 编编 译译 原原 理理2022年8月16日符号串的运算符号串的运算符号串符号串x x和和y y的的连接连接:是把是把y y的符号写在的符号写在x x的符号之后的符号之后得到的符号串得到的符号串xyxy 例如例如x=00 x=00,y
6、=11y=11,则,则xyxy=0011=0011对于任意一个符号串对于任意一个符号串s s,有,有s=s=s s=s=s 符号串的符号串的连接运算连接运算编编 译译 原原 理理2022年8月16日符号串自身连接符号串自身连接n n次得到的符号串次得到的符号串s sn n 定义为定义为 ssssssss ,包括,包括n n个个s s,称为符号串的,称为符号串的幂运算幂运算 s s0 0=,s s1 1=s=s,s s2 2=ss=ss,设设s=01s=01,则,则s s0 0=s s1 1=01=01s s2 2=0101=0101 符号串的符号串的幂运算幂运算编编 译译 原原 理理2022年
7、8月16日设设A A、B B为符号串集合,则为符号串集合,则A A和和B B的的乘积乘积定义为:定义为:ABAB xy xy|xA,yB|xA,yB例如,例如,A Aa,ba,b,B=c,dB=c,d则则AB=AB=符号串集合的乘积符号串集合的乘积ac,ad,bc,bdac,ad,bc,bd 编编 译译 原原 理理2022年8月16日有符号串集合有符号串集合A,定义,定义A0=,A1=A,A2=AA,A3=AAA,AnAn-1A=AAn-1 ,n0例如,例如,A A0,10,1,则,则A A0 0=A A1 1=A A2 2=A A3 3=符号串集合的幂运算符号串集合的幂运算0,10,100,
8、01,10,1100,01,10,11000,001,010,011,100,101,110,111000,001,010,011,100,101,110,111编编 译译 原原 理理2022年8月16日设设A A是符号串集合,定义是符号串集合,定义 A A1 A2 A3 An 称为集合称为集合A A的的正闭包正闭包。A*A0 A称为集合称为集合A A的的闭包闭包。例:A=x,y A?A*?x,y,xx,xy,yx,yy,xxx,xxy,xyx,xyy,A1 A2 A3,x,y,xx,xy,yx,yy,xxx,xxy,xyx,xyy,A0 A1 A2 A3符号串集合的闭包运算符号串集合的闭包运
9、算编编 译译 原原 理理2022年8月16日的闭包的闭包*表示表示 上的一切符号串(包括上的一切符号串(包括)组成的集合)组成的集合的正闭包的正闭包+表示表示 上的上的除除外的所有符号串组成的集合外的所有符号串组成的集合例:例:=a,b=a,b *=,a,b,aa,ab,ba,bb,aaa,aab=,a,b,aa,ab,ba,bb,aaa,aab,+=a,b,aa,ab,ba,bb,aaa,aab=a,b,aa,ab,ba,bb,aaa,aab,.2*.32*编编 译译 原原 理理2022年8月16日若A为某语言的字母表 Aa,b,0,1,9,+,_/,(,),=if,else,for.B为单
10、词集 B=if,else,for,则B A*。语言的句子是定义在B上的符号串。若令C为句子集合,则C B*,程序 C为什么对符号、符号串、符号串集合以及它们的运算感兴趣?为什么对符号、符号串、符号串集合以及它们的运算感兴趣?编编 译译 原原 理理2022年8月16日语言语言是由句子组成的集合,是由一组符号所构成的集合是由句子组成的集合,是由一组符号所构成的集合字母表字母表 上上的一个语言是的一个语言是 上的一些符号串的集合上的一些符号串的集合字母表字母表 上上的每个语言是的每个语言是*的一个子集的一个子集集合a,aa,aaa,或表示为w|w*且w=an,n1 为字母表上的一个语言 例如:字母表
11、=a,b,*=,a,b,aa,ab,ba,bb,aaa,aab,集合ab,aabb,aaabbb,anbn,或表示为w|w*且w=anbn,n1为字母表上的一个语言编编 译译 原原 理理2022年8月16日2.22.2文法和语言的形式定义文法和语言的形式定义 文法文法是对语言结构的定义与描述。(或称为是对语言结构的定义与描述。(或称为“语法语法”)。)。:=“=”:=“+”|“*”:=“(”“)”|编编 译译 原原 理理2022年8月16日 文法的直观概念文法的直观概念:以汉语中的“我是大学生”为例。n 采用BNF来表示汉语句子的构成规则为:句子:=主语谓语 主语:=代词|名词 代词:=我|你
12、|他 名词:=王明|大学生|工人|英语 谓语:=动词直接宾语 动词:=是|学习 直接宾语:=代词|名词n 根据上述规则,“我是大学生”的构成符合上述规则,而“我大学生是”不符合,我们说它不是句子。这些规则成为我们判别句子结构合法与否的依据。换句话说,这些规则看成是一种元语言,用它描述汉语。这种的语言描述成为文法。文法的四部分一组终结符号一组终结符号(语言的基本符号)一组非终结符号一组非终结符号(语法单位)一个开始符号一个开始符号(一个特殊的非终结符号,最感兴趣的语法单位)一组规则一组规则(也称产生式或产生规则)编编 译译 原原 理理2022年8月16日 文法的形式定义文法的形式定义:P10的定
13、义的定义1.1 例例2-1,文法G=(,P,S)是描述标识符的文法,则其中:=标识符,字母,数字 =a,b,c.x,y,z,0,1,2,39 P=|a|b|c|.|z 0|1|2|.|9 S =VNVTVNVT编编 译译 原原 理理2022年8月16日赋值语句赋值语句标识符标识符表达式表达式表达式表达式表达式表达式表达式表达式标识符标识符整数整数标识符标识符表达式表达式y=x+r*6y =x+r*6编编 译译 原原 理理2022年8月16日 例:有一句子:“我是大学生”。这是一个在语法、语义上都正确定句子,该句子的结构(称为语法结构)是由它的语法决定的。在本例中它为“主谓结构”。如何定义句子的
14、合法性?有穷语言:只需逐一列举句子无穷语言:使用文法定义句子的结构,用适当条数的规 则把语言的全部句子描述出来。文法是以有穷的集 合刻划无穷的集合的工具。文法的非形式定义文法的非形式定义编编 译译 原原 理理2022年8月16日 1.1.语法规则语法规则:我们通过建立一组规则,来描述句子的语法:我们通过建立一组规则,来描述句子的语法结构结构。规定用规定用“:=”:=”表示表示“由由组成组成”。:=:=:=:=|:=:=你你|我我|他他:=:=王民王民|大学生大学生|工人工人|英语英语:=:=:=:=是是|学习学习:=:=|文法的文法的BNF表示表示编编 译译 原原 理理2022年8月16日2.
15、2.由规则推导句子由规则推导句子:有了一组规则之后,可以按照一定的方式:有了一组规则之后,可以按照一定的方式用它们去推导或产生句子。用它们去推导或产生句子。推导方法:从一个要识别的符号开始推导,即用相应规则的推导方法:从一个要识别的符号开始推导,即用相应规则的右部右部来替代规则的来替代规则的左部左部,每次仅用一条规则去进行推导。,每次仅用一条规则去进行推导。=这种推导一直进行下去,直到所有带这种推导一直进行下去,直到所有带的符号都由终结符号的符号都由终结符号替代为止。替代为止。编编 译译 原原 理理2022年8月16日 =我我=我我 =我我是是 =我是我是=我是我是大学生大学生:=:=:=:=
16、|:=:=你你|我我|他他:=:=王民王民|大学生大学生|工人工人|英语英语:=:=:=:=是是|学习学习:=:=|推导方法:推导方法:从一个要识别的符号从一个要识别的符号开始推导,即用相应规则的开始推导,即用相应规则的右部右部来替代规则的来替代规则的左部左部,每次仅用一条规则去进行推导。每次仅用一条规则去进行推导。编编 译译 原原 理理2022年8月16日例:有一英语句子:例:有一英语句子:The big elephant ate the peanut.:=:=:=:=:=:=the:=:=big:=:=elephant:=:=:=:=ate:=:=:=:=peanut编编 译译 原原 理理
17、2022年8月16日 =the =the big =the big elephant =the big elephant =the big elephant ate =the big elephant ate =the big elephant ate the =the big elephant ate the peanut:=:=:=:=:=:=the:=:=big:=:=elephant|peanut:=:=:=:=ate:=:=编编 译译 原原 理理2022年8月16日上述推导可写成=the big elephant ate the peanut+说明:(1)有若干语法成分同时存在时,我
18、们总是从最左的语法成 分进行推导,这称之为最左推导,类似的有最右推导(一般推 导)。(2)从一组规则可推出不同的句子,如以上规则还可推出“大象吃象”、“大花生吃象”、“大花生吃花生”等句子,它们 在语法上都正确,但在语义上都不正确。所谓文法文法是在形式上对句子结构的定义与描述,而未涉及语义问题。编编 译译 原原 理理2022年8月16日例例2-3,利用例2-2中的文法,推导出文法的句子012:最左推导:N=S=SD=SDD=DDD=0DD=01D=012最右推导:N=S=SD=S2=SD2=S12=D12=012在这里,N S为长度为1的推导,N SD为长度为2的推导N 012为长度为7的推导
19、。其中,对于N S来说,S是N的直接推导,或N是S的直接归约。一些规定:=推导 =规范推导 长度大于零的推导 长度可为零的推导 长度为n的推导 172*nN SS SD|DD 0|1|2|9编编 译译 原原 理理2022年8月16日 课堂作业:课堂作业:设有文法设有文法GS:Sa|(T)T T,S|S请给出句子(请给出句子(a,(a,a)的最左、最右推导。的最左、最右推导。其最左推导为:其最左推导为:S S=(T)=(T,S)=(S,S)=(a,(,(T)=(a,(,(T,S)=(a,(,(S,S)=(a,(,(a,S)=(a,(,(a,a)其最右推导为:其最右推导为:S S=(T)=(T,S
20、)=(T,(,(T)=(T,(,(T,S)=(T,(,(T,a)=(T,(,(S,a)=(T,(,(a,a)=(S,(,(a,a)=(a,(,(a,a)=(a,S)编编 译译 原原 理理2022年8月16日文法文法GS=(VN,VT,P,S)VN:非终结符号集:非终结符号集 VT:终结符号集:终结符号集 P:产生式或规则的集合产生式或规则的集合 S:开始符号(识别符号)开始符号(识别符号)S VN,S至少要在至少要在 一条规则中作为左部出现一条规则中作为左部出现VVN VT称为文法的字母表称为文法的字母表补补:规则的定义规则的定义:或或V+且至少有一个非终结符,而且至少有一个非终结符,而(VN
21、 VT)*文法的形式定义文法的形式定义编编 译译 原原 理理2022年8月16日G=(VT,VN,S,P),其中,其中:VN=表达式表达式VT=+,*,(,),iS=表达式表达式P=表达式表达式表达式表达式+表达式表达式 表达式表达式表达式表达式*表达式表达式 表达式表达式(表达式表达式)表达式表达式i 【例【例2.1】程序语言中只含】程序语言中只含+、*运算的算术表达式,用运算的算术表达式,用i表示变量或常数,其文法可以表示为:表示变量或常数,其文法可以表示为:描述了表达式的描述了表达式的语法规则语法规则 编编 译译 原原 理理2022年8月16日几点说明几点说明:产生式左边符号构成集合产生
22、式左边符号构成集合VN,且,且 S VN给定一个给定一个 文法,实际只需给出产生式集合,并指定识别符号文法,实际只需给出产生式集合,并指定识别符号G表达式表达式:表达式表达式表达式表达式+表达式表达式表达式表达式表达式表达式*表达式表达式表达式表达式(表达式表达式)表达式表达式iVN:代表程序的语法成份,如:代表程序的语法成份,如“表达式表达式”,它不会,它不会 出现在程序中出现在程序中VT:会出现在程序中,如:会出现在程序中,如i+i编编 译译 原原 理理2022年8月16日有些产生式具有相同的左部,可以和在一起有些产生式具有相同的左部,可以和在一起GE:EE+E|E*E|(E)|i 编编
23、译译 原原 理理2022年8月16日GS:SL|SL|SDLa|b|zD0|1|9【例【例2.2】某种语言的标识符是以字母开头的字母数字】某种语言的标识符是以字母开头的字母数字串,如果用串,如果用L表示表示,D表示表示,用,用S表示字表示字母数字串母数字串 描述了标识符的描述了标识符的词法规则词法规则 编编 译译 原原 理理2022年8月16日例:无符号整数的文法:例:无符号整数的文法:G|00|1|2|3|9描述了无符号整描述了无符号整数的词法规则数的词法规则 编编 译译 原原 理理2022年8月16日说明说明:终结符集是输入字符集,它是构成单词的最基本元素终结符集是输入字符集,它是构成单词
24、的最基本元素终结符集是经词法分析识别后的单词集,如变量终结符集是经词法分析识别后的单词集,如变量i,i,运运算符算符+、*和分界符和分界符(、),它们被视为语法分析中最基,它们被视为语法分析中最基本元素本元素 描述语法规则的文法描述语法规则的文法GE:EE+E|E*E|(E)|i 描述词法规则的文法描述词法规则的文法GS:SL|SL|SDLa|b|zD0|1|9编编 译译 原原 理理2022年8月16日文法的表示方法文法的表示方法3.语法图语法图2.EBNF:扩充的扩充的BNF的元符号:的元符号:,:=,|,(,)字母字母 字母字母 数字数字 数字数字 标识符标识符无符号整数无符号整数1.BN
25、F的元符号:的元符号:,:=,|编编 译译 原原 理理2022年8月16日推导的形式定义推导的形式定义如果如果是文法是文法G=(VT,VN,S,P)的的一个产生式,一个产生式,V*,有符号串,有符号串x,y满足满足x=,y=,x y则称则称y是是x的的直接推导直接推导,也可以说,也可以说,y直接归约直接归约到到x,记作,记作x y。直接推导:用产生式的右部替换产生式的左部直接推导:用产生式的右部替换产生式的左部直接归约:用产生式的左部替换产生式的右部的过程直接归约:用产生式的左部替换产生式的右部的过程 例:例:x S SD LD aD a1=yGS:SL|SL|SDLa|b|zD0|1|9编编
展开阅读全文