版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第3 3章章 语法分析语法分析 第第3章章 语法分析语法分析 3.1 文法和语言文法和语言 第第3 3章章 语法分析语法分析 3.1 文法和语言文法和语言 文法是程序语言的生成系统,而自动机则是程序语言的识别系统;用文法可以精确地定义一个语言,并依据该文法构造出识别这个语言的自动机。因此,文法对程序语言和编译程序的构造具有重要意义,如程序语言的词法可用正规文法描述,语法可用上下文无关文法描述,而语义则要借助于上下文有关文法描述。第第3 3章章 语法分析语法分析 3.1.1 文法和语言的概念1语言 通常我们用表示字母表,字母表中的每个元素称为字符或符号。不同语言的字母表可能是不同的,程序语言的
2、字母表通常是ASCII字符集。由字母表中的字符所组成的有穷系列称为上的字符串或字,字母表上的所有字符串(包括空串)组成的集合用*表示。那么,对字母表来说,*上的任意一个子集都称为上的一个语言,记为L(L*),该语言的每一个字符串称为语言L的一个语句或句子。 第第3 3章章 语法分析语法分析 2文法 文法通常表示成四元组G=(VT,VN,S,),其中: (1)VT为终结符号集,这是一个非空有限集,它的每个元素称为终结符号; (2)VN为非终结符集,它也是一个非空有限集,其每个元素称为非终结符号,且有VTVN=; (3)S为一文法开始符,是一个特殊的非终结符号,即SVN;第第3 3章章 语法分析语
3、法分析 (4)是产生式的非空有限集,其中每个产生式(或称规则)是一序偶(,),通常写作 或:= 读作“是”或“定义为”。在此,为产生式的左部,而为产生式的右部,、是由终结符和非终结符组成的符号串,(VTVN)+且至少有一个非终结符,而(VTVN)*。第第3 3章章 语法分析语法分析 终结符号是指语言不可再分的基本符号,通常是一个语言的字母表;终结符代表了语法的最小元素,是一种个体记号。非终结符号也称语法变量,它代表语法实体或语法范畴;非终结符代表一个一定的语法概念,因此,一个非终结符是一个类、一个集合。例如,在程序语言中,可以把变量、常数、“+”、“*”等看作是终结符,而像“算术表达式”这个非
4、终结符则代表着一定算术式组成的类,如i*(i+i)、i+i+i等;也即每个非终结符代表着由一些终结符和非终结符且满足一定规则的符号串组成的集合。第第3 3章章 语法分析语法分析 文法开始符号是一个特殊的非终结符,它代表文法所定义的语言中我们最终感兴趣的语法实体,即语言的目标,而其它语法实体只是构造语言目标的中间变量;如表达式文法的语言目标是表达式,而程序语言的目标通常为程序。 产生式(也称产生规则或规则)是定义语法实体的一种书写规则。一个语法实体的相关规则可能不止一个。例如,有: P1 P2 Pn第第3 3章章 语法分析语法分析 为书写方便,可将这些有相同左部的产生式合并为一个,即缩写成 P1
5、 2 n 其中,每个i(i=1,2,n)称为P的一个候选式,直竖“ ”读为“或”,它与“”一样是用来描述文法的元语言符号(即不属于的字符)。第第3 3章章 语法分析语法分析 例3.1试构造产生标识符的文法。解答首先,标识符是以字母开头的字母数字串,我们用L表示“字母”类非终结符,用D表示“数字”类非终结符,而用T表示“字母或数字”类非终结符,则有: La b z D0 1 9 TL D 其次,如果用S表示“字母数字串”类,则T是一字母或数字,ST也是字母数字串,即有 ST ST 其中,产生式ST ST是一种左递归形式,由它可以产生一串T。第第3 3章章 语法分析语法分析 最后,作为“标识符”的
6、非终结符I,它或者是一单个字母,或者为一字母后跟字母数字串,即 IL LS 因此,产生标识符的文法GI为: G=(a,b,z,0,9,I,S,T,L,D,I,) :IL LS ST ST TL D La b z D0 1 9第第3 3章章 语法分析语法分析 例3.2写一文法,使其语言是奇数集合,但不允许出现以0打头的奇数。解答根据题意,我们可以将奇数划分为如图31所示的三个部分,即最高位允许出现19,用非终结符B表示;中间部分可以出现任意多位数字09,每一位用非终结符D表示;最低位只允许出现1、3、5、7、9等奇数,用A表示。第第3 3章章 语法分析语法分析 图31 奇数划分示意MB最高位中
7、间 位DDDA最低位第第3 3章章 语法分析语法分析 由于中间部分可出现任意位,所以另引入了一个非终结符M,它包括最高位和中间位部分。假定开始符为N,则可得到文法GN为:G=(0,1,9,N,A,M,B,D,N,):NA MA/*一位数字多位数字*/ MB MD/*仅两位数字(无中间位)多于两位数字*/ A1 3 5 7 9 B1 2 3 4 5 6 7 8 9 D0 B第第3 3章章 语法分析语法分析 3文法产生的语言设文法G=(VT,VN,S,)且、(VTVN)*,如果存在产生式A(VTVN)*),则称A可直接推出,即 A 其中“ ”表示直接推导出, 是应用产生规则进行推导的记号。注意“
8、”与“”不同,“”是产生式中的定义记号。直接推导是对文法符号串A中的非终结符A用相应的产生式A的右部来替换,从而得到。我们给出推导的说明如下:第第3 3章章 语法分析语法分析 (1)如果1可直接推出2,2可直接推出3,n-1可直接推出n,即存在一个自1至n的推导序列:1 2 3 n(n0),则我们称1可推导出n,记为1 n,它表示从1出发经过一步或若干步可推导出n。(2)如果记1 1,则1 n表示从1出发,经过0步或若干步可推导出n;也即1 n意味着或者1=n,或者1 n。第第3 3章章 语法分析语法分析 例如,对下面的文法GE: EE+E E*E (E)i (3.1) 其中,惟一的非终结符E
9、可以看成是代表一类算术表达式。我们可以从E出发进行一系列的推导,如表达式i+i*i的推导如下: E E+E E+E*E E+E*i E+i*i i+i*i第第3 3章章 语法分析语法分析 假定GS是一个文法,S是它的开始符号,如果S ,(VTVN)*,则称是文法GS的一个句型;如果VT*,则称是文法GS的一个句子。仅含终结符的句型是一个句子。 由定义可知,开始符S本身只能是文法的一个句型而不可能是一个句子;此外,上面推导出的i+i*i是文法GE的一个句子(当然也是一个句型),而E+E、E+E*E、E+E*i和E+i*i都是文法GE的句型。 对于文法GS,它所产生的句子的全体称为由文法GS产生的
10、语言,记为LG,即有 L(G)= S 且VT*第第3 3章章 语法分析语法分析 3.1.2形式语言分类 语言学家Noam Chomsky于1956年首先建立了形式语言的描述,定义了四类文法及相应的形式语言,并分别与相应的识别系统相联系,它对程序语言的设计、编译方法、计算复杂性等方面都产生了重大影响。第第3 3章章 语法分析语法分析 10型文法与0型语言(对应图灵机) 如果文法G的每一个产生式具有下列形式: 其中,V*VNV*(注:V=VNVT),即至少含有一个非终结符;V*;则称文法G为0型文法或短语文法,记为PSG。0型文法相应的语言称为0型语言或称递归可枚举集,它的识别系统是图灵(Turi
11、ng)机。第第3 3章章 语法分析语法分析 21型文法与1型语言(对应线性界限自动机,自然语言) 文法G的每一个产生式,均在0型文法的基础上增加了字符长度上满足 的限制,则称文法G为1型文法或上下文有关文法,记为CSG。1型文法相应的语言称为1型语言或上下文有关语言,它的识别系统是线性界限自动机。 1型文法的另一种定义方法是文法G的每一个产生式具有下列形式: A 其中,、V*,AVN,V+;显然它满足前述定义的长度限制,但它更明确地表达了上下文有关的特性,即A必须在、的上下文环境中才能被所替换。第第3 3章章 语法分析语法分析 32型文法与2型语言(对应下推自动机,程序设计语言) 文法G的每一
12、个产生式具有下列形式: A 其中,AVN,V*,则称文法G为2型文法或上下文无关文法,记为CFG。2型文法相应的语言称为2型语言或上下文无关语言,它的识别系统是下推自动机。第第3 3章章 语法分析语法分析 43型文法与3型语言(对应有限自动机) 文法G的每个产生式具有下列形式: Aa或AaB 其中,A、BVN,aVT*,则文法G称为3型文法、正规文法或右线性文法,记为RG。3型文法相应的语言为3型语言或正规语言,它的识别系统是有限自动机。3型文法还可以呈左线性形式: Aa或ABa第第3 3章章 语法分析语法分析 5四类文法的关系与区别 由四类文法的定义可知,从0型文法到3型文法逐渐增加限制。1
13、3型文法都属于0型文法,2、3型文法均属于1型文法,3型文法属于2型文法。四类文法的区别如下:(1)1型文法中不允许有形如“A”的产生式存在,而2、3型文法则允许形如“A”的产生式存在;(2)0、1型文法的产生式左部存在含有终结符号的符号串或两个以上的非终结符,而2型和3型文法的产生式左部只允许是单个的非终结符号。第第3 3章章 语法分析语法分析 例3.3试判断下列产生式集所对应的文法和产生的语言: (1)SACaB (2) SaSBC (3)SAc (4) SaSCaaaCSaBCSSc SaACBDBCBDBAabAbACBEDBDCAaAbAbBaDDaDCBC BcBADACaBab
14、BcaEEabBbbAEbCbc cCcc第第3 3章章 语法分析语法分析 解答 由四类文法的定义与区别可知,14分别为03型文法。 (1) 该0型文法产生的0型语言为L0(G)=a2n n0。例如:当n=2时,句子a22= aaaa , (1)(2)(3)(5)(6)(2)(2)(2)(1)(4)(7)(7)(7)(8)S ACaB AaaCB AaaDB AaDaB ADaaB ACaaB AaaCaB AaaaaCB AaaaaE AaaaEa AaaEaa AaEaaa AEaaaa aaaa 第第3 3章章 语法分析语法分析 (2) 该1型文法产生的1型语言为L1(G)=anbncn
15、 n1。例如,当n=2时,句子a2b2c2=aabbcc是通过下列推导得到的:(1)(2)(6)(3)(4)(5)(7)(8)(9)S aSBC aaBCBC aabCBC aabDBC aabDCC aabBCC aabbCC aabbcC aabbcc 第第3 3章章 语法分析语法分析 (3) 该2型文法产生的2型语言为L2(G)=anbncm m、n1。例如当n=2、m=3时,句子a2 b2 c3=aabbccc是通过下列推导得到的:(2)(2)(1)(4)(3)S Sc Scc Accc aAbccc aabbccc第第3 3章章 语法分析语法分析 (4) 该3型文法产生的3型语言为L
16、3(G)=ambnck m、n、k1。例如当m=2、n=3、k=4时,句子a2b3c4=aabbbcccc是通过下列推导得到的:(1)(2)(3)(3)(4)(5)(5)(5)(6)SaS aaA aabA aabbA aabbbB aabbbcB aabbbccB aabbbcccB aabbbcccc 第第3 3章章 语法分析语法分析 由例3.3可知:anbncn n1 anbncm m、n1 ambnck m、n、k1,这说明对文法规则定义形式的限制虽然加强了,但相应的语言反而更大了。因此,不能主观认定文法限制越大则语言越小,也即下述结论是不成立的:3型语言 2型语言 1型语言 0型语言 在编译方法中,通常用3型文法来描述高级程序语言的词法部分,然后用有限自动机FA来识别高级语言的单词;利用2型文法来描述高级语言的语法部分,然后用下推自动机PDA来识别高级语言的各种语法成分。第第3 3章章 语法分析语法分析 例3.4 给出字母表=a,b上的同时只有奇数个a和奇数个b的所有字符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版货物买卖担保合同
- 管道疏通工程合同范例
- 甲醛公司合同范例
- 物流装卸员工合同范例
- 经济商业合同范例
- 房屋代理销售合同范例
- 2024年度电气自动化控制系统安装承包合同2篇
- 租房合同范例 带家具
- 粮油仓储外包合同模板
- 危险化学品运输事故应急处置预案(4篇)
- 物业客服应急预案
- 儿科对桡动脉采血失败原因分析品管圈鱼骨图柏拉图
- 初中校长培训总结
- 管理能力评估表(10项能力,等级区分)
- 吊装施工记录
- 事故车辆查勘与定损习题答案-交通事故责任认定
- 科学的转折四部曲:薛定谔的猫巴甫洛夫的狗斐波那契的兔子宇航
- DTⅡ型固定式带式输送机(托辊)
- 王阳明心学及其的影响课件
- 国际油轮租船合同中英文对照版
- 马克思主义中国化的历史进程和理论成果-
评论
0/150
提交评论