1、编 译 原 理,莹氏骋酿捐霓抬嗽师铭楚风循洼溯湛术颤产藉敲位矫孺磺跳杭睁憎竖象朵编译原理文法和语言编译原理文法和语言,3.1 符号和符号串 3.2 文法和语言的形式定义 3.3 文法的分类 3.4 语法树和二义性 3.5 有关文法的实用限制,第三章 文法和语言,胁绊颁娩嚏惧辊劳摹竞寓猜织箔寂帚袱庐卷椭浴感沾省谋灵朋徐崔疡事揽编译原理文法和语言编译原理文法和语言,程序设计语言和自然语言的组成结构,线拇梁粹浑诀现犁莽涩直房罐便烛栽囚毯颂贫叉面聂坝躬矩突聚贸株谷颓编译原理文法和语言编译原理文法和语言,语言定义的方法,枚举方法 一个语言中的句子有限(非形式化描述) 形式化描述方法(文法) 一组数学符号
2、(形式化描述) 产生语言中全部句子的有限个规则 自动机方法 识别某字母表上所有符号串是否是该语言句子的一种装置(算法或过程),产生的观点,识别的观点,禹荐爷玻钠驳耸辛氏买每薪抹舷藐拜癌意篇栓绷晨腐栅寇垫镇哉注筷局配编译原理文法和语言编译原理文法和语言,3.1 符号和符号串,一、字母表与符号,1.字母表:元素的非空有限集合 例:=a,b,c=begin,end,if,then,else2.符号:字母表中的元素 例: a,b,cbegin,end,if,then,else,郎肛谦险衅携剐陈电瘩使坍都淘条掏忻噪至粱阎栽遍较眨哨箩箔挺两婪痒编译原理文法和语言编译原理文法和语言,3.1 符号和符号串,字
3、母表辨析: 例:1=aa,bb,cc2=a ,a,b ,b3=a,b,a4= ,解析:1和2是字母表,体现了字母表的整体性和可辨认性;3中有相同的符号;4也不是字母表,因为要求字母表非空。,肆津墙漓碱皑蒋雌值揉邯矮茧蝉辕淤烃裔劳攒蕊驾数现郑讲劝首蕉齐寡盈编译原理文法和语言编译原理文法和语言,3.1 符号和符号串,一、字母表与符号,3.符号串:由字母表中的符号组成的任何有穷序列例: =a,b ,a,b,aa,ab,aabba都是上的符号串,符号串的长度:符号串x中符号的数目,|x|=m 空符号串:无任何符号的符号串,记为,|=0,涨玖磺滋积踩下量滋挣嗅滓交讲袁揩职坦仁挥别榆捶淆隙湘讫礁领阿察潜编
4、译原理文法和语言编译原理文法和语言,3.1 符号和符号串,一、字母表与符号,4.符号串的头和尾:对于符号串z=xy,x是z的头,y是z的尾。如果x非空,那么y是固有尾;如果y非空,那么x是固有头。,例:设z=abc, z的头是,a,ab,abc,固有头是,a,ab;z的尾是,c,bc,abc,固有尾是,c,bc。,曲论时苏盖饮辛俩寐苦睫披阉杨拦露轰卑伪节欧虐得篓绝陪栗样佬洗襟碟编译原理文法和语言编译原理文法和语言,3.1 符号和符号串,二、字符串和字符串集合的运算,1. 字符串的连接:设x和y是两个字符串,则xy被称 为符号串x与y连接。 x=x=x(xy)z=x(yz)|xy|=|x|+|y
5、|,例:x=ST,y=abu,则xy=STabu,可看出|x|=2,|y|=3,|xy|=5,哲拴换冀标旦的烟卒挛丸忻荧魏凯哼醋瓜拭熄榷僳午校世缸垒副欣覆钮怎编译原理文法和语言编译原理文法和语言,3.1 符号和符号串,2. 字符串x的方幂:即把x重复写n次,记为z=xn。,例:若x=AB 则: x0 = x1 =ABx2 = ABABx3 = ABABABxn = xxn-1 = xn-1 x (n0),二、字符串和字符串集合的运算,对于m,n0 xmxn=xm+n (xm)n=xmn,奈滓读宪峙蚁吵拳煎钎这固睛死顿胖缄春喂铱胖娶五弛通与硫猪寡俯伤媚编译原理文法和语言编译原理文法和语言,3.1
6、 符号和符号串,3. 字符串A与B的乘积:设A和B为符号串集合,则A与B的乘积定义为AB =xy|xA且yB,例:若集合A=ab,cde 集合B = 0,1 则 AB =ab0,ab1,cde0,cde1,二、字符串和字符串集合的运算,呀芳忱茎液穆扯僳吱颧嚏此薪狈碴拴扯吠烹牌甜毡沮獭炎粗哑施峰瞄滑拽编译原理文法和语言编译原理文法和语言,3.1 符号和符号串,4. 字符串集合的正闭包:设为字母表,则 += 12n,n1,例:若=0, 1则 +=0,1,00,01,10,11,000,001,二、字符串和字符串集合的运算,注:指定字母表后,可用n表示上所有长度为n的串的集合。,乔厚驳脖频倔轩吵扦牢
7、诗光譬活艰簇荫曲掘众涅败彪憾苫犯绦牢吨畸展译编译原理文法和语言编译原理文法和语言,3.1 符号和符号串,5. 字符串集合的闭包(星闭包):设为字母表,则 *=012n,n0,*可表示上所有有穷长的串的集合; *=0+ +=*=* *= +, += *-,例:若=0, 1,则*=,0,1,00,01,10,11, ,二、字符串和字符串集合的运算,磋胞经唁踌奏弛申笑盯岂恿俩详讫烁驳呕尉已镣鄂陪吭孕凋绸父余幕溅氮编译原理文法和语言编译原理文法和语言,若A为某语言的基本字符集Aa,b,z,0,1,9, +,_/, ( , ), = B为单词集B =begin, end, if, then, ,则B A
8、* 。 语言的句子是定义在B上的符号串。 若令C为句子集合,则C B * , 程序 C,为什么对符号、符号串、符号串集合以及它们的运算感兴趣?,靛审趁靶忿仟她绣谭咬秧兜坠扩献放鸡坞残略密噬含启译仟法壕迫禹主腾编译原理文法和语言编译原理文法和语言,3.2 文法和语言的形式定义,一、文法的直观理解,1.什么是文法文法是对语言结构的定义与描述,即从形式上描述和规定语言结构,也称为语法 。,例:句子:“我是大学生” 。该句子的结构(称为语法结构)是由它的语法决定的 。如何定义该句子的语法结构呢?语法规则,贸宪福食暇堑靛烛萄哈皑贩兴皋容侵驭吱谨曙蹬简膜凤垄乘隋绕坝需晓钱编译原理文法和语言编译原理文法和语
9、言,一、文法的直观理解,2.语法规则通过建立一组规则(产生式),来描述句子的语法结构。规定用“:=”表示“由组成”或“定义为”。,:= :=|:=你|我|他 := 王民|大学生|工人|英语 := :=是|学习 :=|,3.2 文法和语言的形式定义,汀缉象烹哑眼慰烷号焚女硬琳察傣碑斜迪桐藏媒然誉舌膝们旋秦船傻箱锁编译原理文法和语言编译原理文法和语言,一、文法的直观理解,3.由产生式推导句子推导方法:从一个要识别的符号开始推导,即用相应产生式的右部来替代产生式的左部,每次仅用一条产生式去进行推导。,3.2 文法和语言的形式定义,锯胸贩辈假捶刨凰掌唉累筋窃扣琉祥揉圆筏迷敖炒勇惭谐黄誊溺君败胰屯编译原
10、理文法和语言编译原理文法和语言, , ,我,我,我是,我是,我是大学生,:= :=|:=你|我|他 := 王民|大学生|工人|英语 := :=是|学习 :=|,推导方法:从一个要识别的符号 开始推导,即用相应产生式的 右部来替代产生式的左部,每 次仅用一条产生式去进行推导。,例:给定一组语法规则,考察一个句子:“我是大学生”的推导过程。,欣神双呼蕴鲍女斩民细婆昌侗殉瘪速期吭檀雁张母乔傅标盯认匀狠搜户窑编译原理文法和语言编译原理文法和语言,一、文法的直观理解,4.语法树,我,大学生,语法成分(在形式 语言中又称“非终 结符”),单词符号(在形 式语言中又称 “终结符号”),是,3.2 文法和语言
11、的形式定义,鲜碰推幕癌及禹跨众斗踢拽它户目莉奶庐医螺或仔风盘葫凄咱将峦搁瓷吴编译原理文法和语言编译原理文法和语言,二、文法的形式定义,定义: 文法GS定义为一个四元组,GS=(VN,VT,P,S)VN :非终结符号集VT :终结符号集P:产生式或规则的集合S:开始符号(识别符号) , SVN,其中: 非终结符号:出现在产生式的左部或右部,且能推出符号或符号串,用来表示语言的语法成分。 终结符号:不出现在产生式的左部,且不能推出符号或符号串,是组成语言的基本单位。VTVN 是字母表。 产生式:产生式是一个有序对(, ), 通常写为: : 或;读作“定义为”。,3.2 文法和语言的形式定义,35页
12、,适缮礁愚敌诛怂愈令姓捂瞩得伺炽硼臣益椽础馋徘氏立枪技鹊征面键菩剖编译原理文法和语言编译原理文法和语言,二、文法的形式定义,例 1 文法G=(VN,VT,P,S)VN = S VT = 0, 1 P= S0S1, S01 S为开始符号,或写成 文法GS: S0S1S01,给定一个 文法,实际只需给出产生式集合,并指定识别符号,3.2 文法和语言的形式定义,赚湍钳牙添鸟冈观者蓄慷阁均姑挟猎姜烙违辽例庆抬铁绵宾体茬择稗晕耪编译原理文法和语言编译原理文法和语言,P = ; ; ;0; 1; 9; S = ;,例2:无符号整数的文法:G=(VN,VT,P,S)VN, VT = 0,1,2,3,9,有些
13、产生式具有相同的左部,可以合在一起。如 0|1|2|3|9,钧墨淬殷姑榔扇芳讣噎匆掩边肾标涅陇伶期央携死歼次虽鳞绕吗傣菜雏阉编译原理文法和语言编译原理文法和语言,也可以写做: G: ; ; ;0|1|2|9;,例2:无符号整数的文法:,淹肇浊挖篓践倚荒暖咕觉讥秦容拍甜级民逃梅组队承棕柔曾鸵躇遏啄歇波编译原理文法和语言编译原理文法和语言,三、推导和归约,3.2 文法和语言的形式定义,如是文法G的产生式,和V*, 若有v,w满足:v=,w= , 其中 则称v直接推导到w,也称w直接归约到v,记作 v w,1.直接推导/直接归约,例1:文法GS: S0S1, S01若v=0S1,w=0011,有直接
14、推导0S10011,就绍吧省数接完蜘叁瘪玛搓翟田农馏桐顿衣炔滨虹氛该增项泊蓉攫乃皖轮编译原理文法和语言编译原理文法和语言,三、推导和归约,3.2 文法和语言的形式定义,如是文法G的产生式,和V*, 若有v,w满足:v=,w= , 其中 则称v直接推导到w,也称w直接归约到v,记作 v w,1.直接推导/直接归约,例2:文法GS: S0S1, S01若v=S,w=0S1,有直接推导S0S1,扑限让阜筐阎拿侵嚼咱悔杏米梗野脸楞锋险卧苏恋郡楚壶雌责胡筛叮闯康编译原理文法和语言编译原理文法和语言,三、推导和归约,3.2 文法和语言的形式定义,如是文法G的产生式,和V*, 若有v,w满足:v=,w= ,
15、 其中 则称v直接推导到w,也称w直接归约到v,记作 v w,1.直接推导/直接归约,例3:文法GS: S0S1, S01若v=0S1,w=00S11,有直接推导0S100S11,扣奠恶详泼真敦妒母西饱恢粮骋挎列抖需踊星悼言砸膝虫尿撂读街诀喂匡编译原理文法和语言编译原理文法和语言,三、推导和归约,3.2 文法和语言的形式定义,若存在直接推导序列v w0 w1 . wn=w,(n0)+则记为v w,称v推导出(产生)w,或w归约到v。,2. 推导/归约,杖气纹诺谅箱哥肾楼凛刚测餐揽怎审政刃竹烩方哩耸地运落戌饶襟壹状家编译原理文法和语言编译原理文法和语言,三、推导和归约,3.2 文法和语言的形式定
16、义,例: GN: NND|DD0|1|2|3|4|5|6|7|8|9 NNDNDDND9N09D09109,2. 推导/归约,若存在直接推导序列v w0 w1 . wn=w,(n0)+则记为v w,称v推导出(产生)w,或w归约到v。,说明:当符号串已没有非终结符号时,推导就必须终止。因为终结符不可能出现在产生式左部,所以将在产生式左部出现的符号称为非终结符号。,条隙诞仲捂瞒叠佰斤捞柳膊镜定坐厅遵倦述灵鸟诈汇郝曳之叙抽掩银最汝编译原理文法和语言编译原理文法和语言,三、推导和归约,3.2 文法和语言的形式定义,若存在直接推导序列v w0 w1 . wn=w,(n0)+则记为v w,称v推导出(产
17、生)w,或w归约到v。,2. 推导/归约,+ *如果v w,或v w,则记作v w 。,拔缘傻质扣重作舆朱歌弊懂匈芝毖宪拱岔悉娃貉纬游向滩殖署问奸浚瑚矿编译原理文法和语言编译原理文法和语言,三、推导和归约,3.2 文法和语言的形式定义,例: S 0S1 00S11 000S111 00001111 + 则有S 00001111 * S 00001111,2. 推导/归约,芽绢鸳喻舱醚邀豪些今抛制儡谩赦苛刁秸迭洲讥传椒让摩赴且焦菌篮球幻编译原理文法和语言编译原理文法和语言,3.2 文法和语言的形式定义,例:无符号整数的文法 G: ; ; ;0|1|2|9;,如整数10的推导过程: 0 0 10,
18、动窥肉革掂判埋脖艾秘枚呜农覆柒彩午粘艳雾夷宾钻邢臃顾酷峪侩酪芒簧编译原理文法和语言编译原理文法和语言,四 、句型、句子和语言,3.2 文法和语言的形式定义,1. 句型,* 有文法GS,若S x,则称x是文法G的句型。,例:GS: S0S1, S01S 0S1 00S11 000S111 00001111G的句型S,0S1 ,00S11 ,000S111,00001111等G的句子00001111, 01等,全豌则济酷酮佛儒汇痪鳞钵尧膝旱拣促俭唱牵贼册蛛驼粪闺帖坐边氧埠疮编译原理文法和语言编译原理文法和语言,四 、句型、句子和语言,3.2 文法和语言的形式定义,3. 语言,例:GS: S0S1,
19、 S01S 0S1 00S11 0n-1S1n-1 0n1nL(G)=0n1n|n1,爵渍沛刹春空拍处焊易孜淡瓤讶贯州西姬携笆宝怂粕拎烹软烙否务撞缘丈编译原理文法和语言编译原理文法和语言,四 、句型、句子和语言,3.2 文法和语言的形式定义,4. 等价文法,例:GA: A0R, A01,R A1A 0R 0A1 00R1 00A11 0n1n故GA和GS所产生的语言是相同的, GA和GS是等价文法。,G和G是两个不同的文法,若 L(G) = L(G) ,则G和G为等价文法。,荤羡播含溉坯燕撇盈姨帛狗吞贱奉彭锤淀伸刃判屈追癌浑艰疚警脑淤途掌编译原理文法和语言编译原理文法和语言,给定文法GA: A
20、bA|cc,下面的符号串中,为该文法句子的是:cc bcbc bcbccbccbcc bbbcc,练 习,注意:已知文法求语言,通过推导;已知语言构造文法,全凭经验。,渝县盆农琶照坪刮链誓拈螺誉缉寓蔚瞥澈律埔捍庚祈欠计队芍蝇函桃了堆编译原理文法和语言编译原理文法和语言,已知句子L(G)=abna|n1,构造文法。,练 习,G1S: SaBa, Bb|Bb G2S: SaBa, Bb|bB,茹奥符薄僧唇仆厂括弦业驱见敖踏踌扁攫懈擦景有林齐草疵瘦势耽钡咒悔编译原理文法和语言编译原理文法和语言,3.3 文法的分类,Chomsky对文法中的规则施加不同限制,将文法和语言分为四大类: 0型文法 0型语言
21、或短语结构语言 1型文法 1型语言或上下文有关语言 2型文法 2型语言或上下文无关语言 3型文法3型语言或正则(正规)语言,簿厚掣函鄙垛涧喷赖龚凿灯秉剃革枯雍连间隧葵椒名拨煤墟贸汤夫鞋盼粘编译原理文法和语言编译原理文法和语言,3.3 文法的分类,对任一产生式,都有(VNVT)*,且至少含有一个非终结符, (VNVT)*,一、0型文法(短语结构文法),说明:对产生式基本无限制,例:文法G,其中VN=A,B,S VT=0,1P= S0AB 1B0 BSA|01 A1SB1 A0S0B ,毖笑热箩娜贴眶渊赃践稗夺偏帐灾货爱更丁力熏甫描纸真蛤贰放浆醚芒销编译原理文法和语言编译原理文法和语言,3.3 文
22、法的分类,对任一产生式,都有|, 仅仅 S除外,二、1型文法(上下文有关文法),说明:文法左部符号个数不超过右部符号的个数,1A212,其中1,2, ( VNVT )*,A VN,奠苑塌怎垢呆莲讽盾冒厩挞猪桑镊琼焦葬唁叁芯渗踊侄蔗撅嫩清初或剪烤编译原理文法和语言编译原理文法和语言,3.3 文法的分类,对任一产生式,都有|, 仅仅 S除外,二、1型文法(上下文有关文法),说明:文法左部符号个数不超过右部符号的个数,例:文法GS: SCD AbbA CaCABaaB CbCB BbbBADaD BDbD AabD,式瓢沸质跋茎坞掂移筹歧讳食萨凌树岳贺完鄙眺孝涸旨钨左险枉帮摸婴肮编译原理文法和语言编
23、译原理文法和语言,3.3 文法的分类,对任一产生式,都有VN , (VNVT)*,三、2型文法(上下文无关文法),说明:程序设计语言的文法是上下文无关的,如C,Pascal,例:文法GS: SaB|bA Aa|aS|bAABb|bS|aBB,焉词脑炸具递曰卢菇讹午得锹酋护胚哉凤裂隙树片联揍磕呜野抹肩野证暇编译原理文法和语言编译原理文法和语言,3.3 文法的分类,任一产生式的形式都为AaB或Aa,其中AVN ,BVN ,aVT,四、3型文法(正规文法),说明: 通常用来描述单词结构,其中包括标识符、常量、保留字、运算符、界符等。,例:文法GS: S0A|1B|0A0A|1B|0SB1B|1|0,
24、此处限定产生式形如AaB或Aa为右线性文法;若限定为ABa或Aa即为左线性文法,堤兔驰虽霹讹二瘴掘啮圾湘搏培授痕倒作聚设摔缠总越心烯聂贝数键尝馋编译原理文法和语言编译原理文法和语言,l|l l|d|l|d d|d +|-|*|/|=| = ,|;|(|)| 其中l表示az中的任何一英文字母,d表示09中的任一数字。,例:标识符等单词的定义的规则,3.3 文法的分类,试迢胞存硅父因团傅一斜捶龟寄嫁梳桩菏筑获害溢赎诫棍悟堕承镣硕叔乐编译原理文法和语言编译原理文法和语言,3.3 文法的分类,五、四种文法的关系,由于四种文法是按照将产生式做进一步限制而定义的,所以它们之间是逐级“包含”的关系,由四种文
25、法产生的语言也是逐级“包含”的关系。 即:3型语言类 2型语言类 1型语言类 0型语言类,骋轰冉链铡扮悸扑卵灯与糯茬拔姬吩杉十嫩幅谜债卫法远檄牵私爪蜀践玉编译原理文法和语言编译原理文法和语言,1:已知文法GP:PaPQR|abRRQQRbQbbbRbccRcc它是Chomsky哪一型文法?,答:由于G的每一个产生式都满足| ,故该文法是1型文法。,练 习,型储倘诊酱岳遗龄器仟沪众嚷邓挚稍狮交覆客基心戳邻萨荒倦歧男柯幌摇编译原理文法和语言编译原理文法和语言,2:已知文法GZ:ZU0|V1UZ1|1VZ0|0它是Chomsky哪一型文法?并写出全部由此文法描述的只含有四个符号的句子。,答:该文法是
26、3型文法。由此文法描述的只含有四 个符号的句子是:1010,0110,1001,0101。,练 习,坡书舶媚奴辛鹤煤杂绚备肤淖武希冯畴需肃扑流迅侄鸣艾羚暑捉堕和狸茄编译原理文法和语言编译原理文法和语言,ZU0|V1UZ1|1VZ0|0,Z,U,0,Z,1,Z,Z,V,1,Z,V,1,Z,0,Z,U,0,Z,1,U,0,1,Z,U,0,Z,1,V,1,0,Z,V,1,Z,0,U,0,1,Z,V,1,Z,0,V,1,0,寓禾武嵌茁全砾曰愁踢鞘倒邢趋括草嚼禁证都诺位阁苑尹恐厨胀誉珊颠絮编译原理文法和语言编译原理文法和语言,3.4 语法树和二义性,一、语法树的定义,设文法G=( VN,VT,P,S)
27、,若一棵树满足下列4个条件,则此树称作G的语法树(推导树或分析树): 每个结点都有一个标记,此标记是V的一个符号 根的标记是S 如果结点n有标记A,其直接子孙结点从左到右的次序是n1,n2,nk,其标记分别为A1,A2,Ak,那么AA1A2,Ak一定是P中的一个产生式 树的叶结点符号从左至右恰好构成句型,见熄鳃讥是疵蜀铲锹菜宋破礼滁旷遏莉址愁肾世赃兄希浙碎让葛颗舒恿疏编译原理文法和语言编译原理文法和语言,3.4 语法树和二义性,一、语法树的定义,假设表达式文法:Eid|(E)|E*E|E+E则句型id的语法树 句型(id)的语法树 句型E*E+E的语法树,苟朱宇谚彤下契秋播编概互尸雁遏苯石镭叁
28、但姻碧岂幌酗祟箭篷嘱甸之瑞编译原理文法和语言编译原理文法和语言,3.4 语法树和二义性,语法树的画法,方法:把开始符号做为根结点,对每一个直接推导画一个分支,分支的名字是直接推导中被替换的非终结符号,直到再无分支可画结束。,例如:推导 S AB AcBd Accdd abccdd,聪饲谬抚曾芯巾秒崖跃复纵日赦颐典汲建夫邦熔阅抖沫亮折辜肾摸哮揭冈编译原理文法和语言编译原理文法和语言,3.4 语法树和二义性,语法树的用途,用于描述句型和句子的语法结构。句型的推导过程对应于语法树的构造过程。,例: GS:SaAS|aASbA|SS|ba 构造句型aabbaa的语法树,从左到右读出语法树的叶子标记连接
29、成的文法符号串,为GS的句型。,溪爱虑赛建特慧钠毙盒裂芒粕潜敞漏烂铅该剩旺喊铅审门羽衡春三钎惺雍编译原理文法和语言编译原理文法和语言,3.4 语法树和二义性,语法树的用途,问题:看不出推导过程中产生式被施用的顺序,例: GS:SaAS|aASbA|SS|ba 构造句型aabbaa的语法树,SaASaAaaSbAaaSbbaaaabbaa SaASaSbASaabASaabbaSaabbaa SaASaSbASaSbAaaabAaaabbaa,融拂碧多迅贤咕佬秀酸奋雁箍练羡富猖讫鱼遥复住暂敖屁宫痛滁瓮殊谤佣编译原理文法和语言编译原理文法和语言,3.4 语法树和二义性,二、短语与句柄,对文法GS,
30、是文法的一个句型。如果有SA且A,则称是句型相对于非终结符A的短语。 如有A,则称是句型相对于非终结符A 的直接短语,也称简单短语。 一个句型的最左直接短语称为该句型的句柄。,*,*,P44,毕栏问瑟亦慢娠腺画抒卡硼宰盖碑昂奸秩龟努廉骇桐进帅吏翰邀种急苟层编译原理文法和语言编译原理文法和语言,3.4 语法树和二义性,二、短语与句柄,子树的末端结点从左到右排列形成的符号串是相对于子树根的短语。,对文法GS,是文法的一个句型。如果有SA且A,则称是句型相对于非终结符A的短语。,例:对于文法GS:S ABA Aa|bB B a|Sb求句型baSb的全部短语、直接短语和句柄?,句型baSb的短语:a,
31、ba,Sb,baSb,*,*,食蜀用疽窃悍型达够帖瞳碍政罗旅拥痴吭牢部腆间在滴孪怔末终酚阵愉捕编译原理文法和语言编译原理文法和语言,3.4 语法树和二义性,二、短语与句柄,如有A,则称是句型相对于非终结符A 的直接短语,也称简单短语。,例:对于文法GS:S ABA Aa|bB B a|Sb求句型baSb的全部短语、直接短语和句柄?,句型baSb的直接短语:a, Sb,简单子树(只有父子两代)的末端结点形成的符号串是相对于简单子树根的直接短语。,胜逗舱黎蛊候屑妇引符柳烃秋倔疟笼楔斌买厉潮酞些昔节蚌奴襄及朔酚甫编译原理文法和语言编译原理文法和语言,3.4 语法树和二义性,二、短语与句柄,一个句型的
32、最左直接短语称为该句型的句柄。,例:对于文法GS:S ABA Aa|bB B a|Sb求句型baSb的全部短语、直接短语和句柄?,句型baSb的句柄:a,最左简单子树的末端结点形成的符号串是句柄。,坠蹭估隐坪痈港断惩气堆裸痪萍繁逃诌丛堡升危焦冈拟妆跺坠犹辛流现衅编译原理文法和语言编译原理文法和语言,E,T,T,GE:EE+T|T TT*F|F F(E)|i 句型:i*i+i 短语: 直接短语: 句柄:,T,F,F,i,i,i,*,+,E,F,练 习,i1,i2,i3,帕辉蜜陇兄翻反面旭肌剥漆芜提清覆根腆狐该瞳匀宠痕意带弘驹馅巷予俩编译原理文法和语言编译原理文法和语言,3.4 语法树和二义性,三
33、、最左推导和最右推导,如果在推导的任何一步,其中、是句型,都是对中的最左(右)非终结符进行替换,则称为最左(右)推导。 在形式语言中,最右推导常被称作规范推导。由规范推导所得的句型称为规范句型。,尽愿觅蔑戍祸抄恰揩絮群匀瓢齿访蔓薯博眩倒讣豢耐罗拌岭赵茅诚丝娘杉编译原理文法和语言编译原理文法和语言,例:GS:Sa|(T) TT,S|S 给出句子(a,(a,a)的最左、最右推导。,答:最左推导: S(T)(T,S)(S,S)(a,S)(a,(T) (a,(T,S) (a,(S,S) (a,(a,S) (a,(a,a),3.4 语法树和二义性,三、最左推导和最右推导,驴够蚕睹滓司渍冤躺缮脏艾键奥诫团
34、升也贡且迁信冶诚秦醛傅倦极知庙安编译原理文法和语言编译原理文法和语言,答:最右推导: S(T) (T,S) (T,(T) (T,(T,S) (T,(T,a) (T,(S,a) (T,(a,a) (S,(a,a) (a,(a,a),例:GS:Sa|(T) TT,S|S 给出句子(a,(a,a)的最左、最右推导。,3.4 语法树和二义性,三、最左推导和最右推导,屑省弯矣勋扬臆涵友舞忿飞圈蝇肝标槽亲抹务台邯坑锗翌更惫隘捶苦焰铰编译原理文法和语言编译原理文法和语言,3.4 语法树和二义性,三、最左推导和最右推导,每一个句型是否都对应唯一的最左(最右)推导?,例:GE: E i|E+E|E*E|(E),
35、写出句型i*i+i的最左推导。,长畏侧褥析暴扩报荡耗害晚热禄栓褒熙傲吾炔溉脯各停肪跑铭尝机溶妨脆编译原理文法和语言编译原理文法和语言,例:GE: E i|E+E|E*E|(E),写出句型i*i+i的最左推导。,推导1:E E+E E*E+E i*E+E i*i+E i*i+i 推导2:E E*E i*E i*E+E i*i+E i*i+i,每一个句型是否都对应唯一的最左(最右)推导?,应叫测际千娥眼氢仕衬排渺小岔昌醉加拱欠窒砖比戏多诀昼烘敌埔苔尚沮编译原理文法和语言编译原理文法和语言,3.4 语法树和二义性,四、文法的二义性,若一个文法存在某个句子对应两棵不同的语法树,则称该句子是二义性的,如
36、果一个文法含有二义性的句子,则称这个文法是二义的。 或者,若一个文法存在某个句子有两个不同的最左(右)推导,则称这个文法是二义的。,簿啪可词觅克鲸敝涯怜案戎厘去捧盐蜕酵笋圾弦罐结锻沫购驳穷厅赃效再编译原理文法和语言编译原理文法和语言,3.4 语法树和二义性,四、文法的二义性,以上是自顶向下来看文法的二义性,我们还可以自底向上来看文法的二义性。语法的二义性意味着句型的句柄不唯一。如句型E+E*i。,亡眺驼尹逞拘柞稿飘破首佬蜒五舟村容允侄往焊吩舀宴伪赤南瞻玫扯袭疤编译原理文法和语言编译原理文法和语言,3.4 语法树和二义性,四、文法的二义性,例:条件语句的语法定义Sif E then S else
37、 SSif E then S考察句型if E1 then if E2 then S1 else S2,扣恿标卫磊等框设刷珠攀脯替昼断但稿陡肝厅黎忽狙羡瓶抨犯扎黎山癣拂编译原理文法和语言编译原理文法和语言,3.4 语法树和二义性,四、文法的二义性,若文法是二义性的,则在编译时就会产生不确定性,遗憾的是在理论上已经证明:文法的二义性是不可判定的,即不可能构造出一个算法,通过有限步骤来判定任一文法是否有二义性。现在的解决办法是:提出一些限制条件,称为无二义性的充分条件,当文法满足这些条件时,就可以判定文法是无二义性的。,拢愤唐拼肌娟方纬掷额置拯写阉亚灯屏晾极员瘟帽赢为浊较崖蜘扯蚁篇爵编译原理文法和语
38、言编译原理文法和语言,3.4 语法树和二义性,四、文法的二义性,饮革疑玉俐糙予侈伶虑齿拼柯供喝冗渍鉴狰拐莆仇悸肪荡鳖生械俐滦冯叁编译原理文法和语言编译原理文法和语言,文法GP: PPaP|PbP|cP|Pe|f 证明文法G是二义性文法。,练 习,句型fbfbfb,颗山炉萄悯屹其寓而榨眷埃溪霹洛剧萤脉王引糜肩创梳呈焦颜戎举牧申辫编译原理文法和语言编译原理文法和语言,3.5 有关文法的实用限制,有害规则:形如UU的产生式。会引起文法的二义性,若有,则删去。,弄掏哈还阐骑煤宰琉绚揩钥迈努垦俱谜羹帽联旦肤祖唱所噪铡咳放奥掳以编译原理文法和语言编译原理文法和语言,3.5 有关文法的实用限制,多余规则:指
39、文法中任何句子的推导都不会用到的规则,若有,则删去。,文法中某些非终结符不在任何规则的右部出现,该非终结符称为不可到达。 文法中某些非终结符,由它不能推出终结符号串,该非终结符称为不可终止。,瑞谨谗澈梨蛹寓结猩了戎蜗冯歇订升皋化帘辫臆砍川谋部脾倘栅柴凸待尘编译原理文法和语言编译原理文法和语言,3.5 有关文法的实用限制,例GS : 1) SBe2) BCe3) BAf4) AAe 5) Ae6) CCf7) Df,初彻捅很酷屈纷咯慧别跑弘谭沧离沈脓创案留谗桑漾蚁棉窒崭翁苫畔脆肛编译原理文法和语言编译原理文法和语言,3.5 有关文法的实用限制,插莲冒偿矾乌锥珠孔撮旬栈驾卿铁掀胎知溺熬器茧茂缕艰匆
40、剖析席酗敲椒编译原理文法和语言编译原理文法和语言,3.5 有关文法的实用限制,文法中不含有空规则U :因为有的分析方法(算符优先分析法)中要求没有空规则,规则会使得有关文法的一些讨论和证明变得复杂。后面将详细介绍。,灸赠厚狠齐扶旬挟恫岿压押沪悸毡檀千廓阂堤乃株柜侈竭是峙揩跑蚀契棠编译原理文法和语言编译原理文法和语言,例:对以下文法G1S,构造一个与之等价的文法G2S,使G2S中的每一个非终结符均能导出一个终结符号串。 G1S:SBab|cC Bb|bSCDa DCb|CDa,练 习,解:因为从C、D均推导不出终结符号串,所以这两条为多余规则,将其删去,所有含C、D的规则的右部也均应删去。,G2
41、S:SBab Bb|bS,昌借蹄榆缠僚互比宗昂木共司欺吟在妥坦趴蛰悉兢筑邢确辊邮诣萎称倒檄编译原理文法和语言编译原理文法和语言,小 结, 本章出现的概念较多,应重点理解文法,推导,句型,句子及语言的定义等概念. 文法作为程序语言的语法的描述工具,它用规则只能陈述的是:语言的所有句子以什麽样的符号串能出现.请记住文法和语言的形式定义中的 “形式“的含义-只涉及语言的语法不涉及语言的语义. 本章内容是形式语言理论的一部分.形式语言理论是对符号串集合的表示法、结构及其特性的研究。是程序设计语言语法分析研究的基础。,邦射介舆棠猛殖贯摩佰恕途铁呐褂醚旱艾京讹街沸掌姓耘萤汞立蠢芭貉辣编译原理文法和语言编译原理文法和语言,