- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第1页/共25页本讲目标 第三章《语法分析》3.2 推导与语法树推导与短语语法树与二义性重点掌握短语、句柄的概念二义性的消除第一页,编辑于星期三:十五点 四十六分。第2页/共25页3.2 推导与语法树推导与短语1、规范推导在节中,所给句子i+i*i推导序列中的每一步推导都是对句型中的最右非终结符用相应产生式的右部进行替换,这样的推导称为最右推导(规范推导),规范推导的逆过程称为规范规约如果每一步推导都是对句型中的最左非终结符用相应产生式的右部进行替换,则称为最左推导举例:文法G[E]:E?→?E?+?E | E?*?E | (E) | i (3.1) 句子i+i*i的最左推导和最右推导?第二页,编辑于星期三:十五点 四十六分。第3页/共25页3.2 推导与语法树推导与短语2、短语设αβδ是文法G[S]的一个句型,如果有:则称β是句型αβδ关于非终结符A的一个短语,或称β是αβδ的一个短语。特别是有A→β产生式时,β为句型αβδ的一个直接短语或简单短语 短语的两个条件缺一不可。仅有A → β未必意味着β就是句型αβδ的一个短语,还需要有 加以限制;即短语属于句型的组成部分。 第三页,编辑于星期三:十五点 四十六分。第4页/共25页3.2 推导与语法树推导与短语3、句柄一个句型的最左直接短语称为该句型的句柄。注意,一个句型的直接短语可能不只一个,但最左直接短语则是惟一的。举例:文法G[E]:S?→?AB A → bB ?B → Sb | a 句型“baSb”的短语和句柄?[解答]:(1)最左推导句型本身是该句型关于开始符号的短语第四页,编辑于星期三:十五点 四十六分。第5页/共25页3.2 推导与语法树推导与短语[解答]:(2)最左推导句型baSb的子串Sb,是该句型相对于非终结符B的一个短语,而且是该句型的直接短语 (3)最右推导句型baSb的子串a, 是该句型相对于非终结符B的一个短语,而且是该句型的直接短语、句柄第五页,编辑于星期三:十五点 四十六分。第6页/共25页3.2 推导与语法树推导与短语[解答]:(4)最右推导句型baSb的子串ba, 是该句型相对于非终结符A的一个短语注意:短语、直接短语、句柄都是针对某一句型来说的,都是指句型中的哪些符号串能够构成短语、直接短语、句柄。脱离句型,谈论三者是无意义的。第六页,编辑于星期三:十五点 四十六分。第7页/共25页例5.2 文法G E →?T | E +T T →? F | T * F F →? i |(E)i1*i2+i3 是文法G的一个句型吗?如果是,求出其句柄。第七页,编辑于星期三:十五点 四十六分。第8页/共25页3.2 推导与语法树推导与短语4、素短语含有终结符的短语,如果它不存在也具有同样性质的真子串(不能包含有另一个素短语),则该短语为素短语 (1)是短语 (2)至少包含一个终结符 (3)不再包含其它素短语例如,在中,i、E*i和E+E*i是句型E?+?E*i的三个短语;其中i为素短语;E*i虽为短语且含有终结符,但它的真子串i是素短语,故E*i不是素短语;同样E+E*i也不是素短语。 第八页,编辑于星期三:十五点 四十六分。第9页/共25页3.2 推导与语法树推导与短语4、素短语(练习) 先找短语:Ei 、E*i 、 E+E*i 再找素短语:ET+EiT+FiFT*T先找短语:ET、T*F 、 T+T*F 、 i 、 T+T*F+i EE +再找素短语:EE*T*F 、 ii第九页,编辑于星期三:十五点 四十六分。第10页/共25页3.2 推导与语法树语法树与二义性对程序语言来说,有两个问题需要解决: (1)判别程序在语法上是否正确; (2)句子的识别或分析。在编译方法中,为了便于识别或分析句子而引入了语法树这一重要的辅助工具语法树以图示化的形式把句子分解成各个组成部分来描述或分析句子的语法结构,这种图示化的表示与所定义的文法规则完全一致,但更为直观和完整 第十页,编辑于星期三:十五点 四十六分。第11页/共25页3.2 推导与语法树语法树与二义性1、语法树(定义)对文法G[S]?=?(VT, VN, S, ξ),满足下列条件的树称为G[S]的语法树:(1) 每个结点用G[S]?的一个终结符或非终结符标记;(2) 根结点用文法开始符S标记; (3) 内部结点(指非树叶结点)一定是非终结符,如果某内部结点A有n个分支,它的所有子结点从左至右依次标记为x1、x2、…、xn,则A?→?x1x2…xn一定是文法G[S]的一条产生式; (4) 如果某结点标记为ε,则它必为叶结点且是其父结点的惟一子结点。第十一页,编辑于星期三:十五点 四十六分。第12页/共25页3.2 推导与语法树1、
文档评论(0)