第3章文法和语法4学时(576KB).ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
上下文无关文法的语法树 用于描述上下文无关文法的句型推导的直观方法 例: G[S]: S→aAS A→SbA A→SS S→a A→ba S a A S S b A a a b a 句型aabbaa的语法树(推导树) 叶子结点:树中没有子孙的结点。 从左到右读出推导树的叶子标记,所得的句型为推导树的结果。也把该推导树称为该句型的语法树。 推导过程中施用产生式的顺序 例: G[S]: S→aAS A→SbA A→SS S→a A→ba S a A S S b A a a b a 句型aabbaa的语法树(推导树) S?aAS?aAa?aSbAa?aSbbaa?aabbaa S?aAS?aSbAS?aabAS?aabbaS?aabbaa S?aAS?aSbAS?aSbAa?aabAa?aabbaa 最右推导 最左推导 最右推导被称为规范推导 由规范推导所得的句型称为规范句型 问题:一个句型是否对应唯一的一棵语法树? 例:G[E]: E → i E → E+E E → E*E E → (E) E E + E E * E i i i E E * E i E + E i i 句型 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 二义文法 若一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。 或者,若一个文法存在某个句子有两个不同的最左(右)推导,则称这个文法是二义的。 产生某上下文无关语言的每一个文法都是二义的,则称此语言是先天二义的。 注:程序设计语言的文法不要二义! 改造二义文法 例:将二义文法改造为无二义文法 G[E]: E → i G[E]:E → T|E+T E → E+E T → F|T*F E → E*E F →(E)|i E → (E) 或规定优先顺序和结合律 证明文法二义:参见书P.46 例题1 3.6 句型的分析 句型分析 就是识别一个符号串是否为某文法的句型,是某个推导的构造过程。 分析程序 在语言的编译实现中,把完成句型分析的程序称为分析程序或识别程序。 分析算法又称识别算法。 从左到右的分析算法 即总是从左到右地识别输入符号串。 首先识别符号串中的最左符号 进而依次识别右边的一个符号 分析算法分类 自上而下分析法 从文法的开始符号出发,反复使用各种产生式,寻找与输入符号匹配的推导。 自下而上分析法 从输入符号串开始,逐步进行归约,直至归约到文法的开始符号。 两种方法反映了两种不同的语法树的构造过程 自上而下的分析 例20 文法G:S → cAd A → ab A → a 识别输入串 cabd 是否该文法的句子。 S S S c A d c A d a b 推导过程:S ? cAd ? cabd 自下而上的分析 例21 文法G:S → cAd A → ab A → a 识别输入串 cabd 是否该文法的句子 S A A c a b d c a b d c a b d 归约的过程:S ? cAd ? cabd 句型分析的有关问题 1)如何选择使用哪个产生式进行推导? 假定要被代换的最左非终结符号是V,且有n条规则:V→A1|A2|…|An,那么如何确定用哪个右部去替代V? 2)如何确定“可归约串”? 在自下而上的分析方法中,在分析程序工作的每一步,都是从当前串中选择一个子串,将它归约到某个非终结符号,该子串称为“可归约串”。如何确定“可归约串”? 引出“句柄”的概念。

文档评论(0)

精品课件 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档