- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理课件Chapt2
终结符号 【VT 】:从语法角度看,终结符是一个语言的不可再分的基本符号。如:基本 字、标识符、常数、算符和界符等。 非终结符号(语法变量)【VN 】:用来代表语法单位。如“算术表达式”、“布尔表达式”、“赋值句”、“子程序”、“函数”等。一个非终结符代表一个一定的语法概念,是一个类(集合)记号,而不是一个个体记号。 上下文无关文法的定义: 一个上下文无关文法G是一个四元式 G=(VT,VN,S,P),其中 VT:终结符集合(非空) VN:非终结符集合(非空),且VT ? VN=? S:文法的开始符号,S?VN P:产生式集合(有限),每个产生式形式为 P??, P?VN, ? ? (VT ? VN)* 开始符S至少必须在某个产生式的左部出现一次。 几点规定: “ ? ”也可以用“::=表示, 这种表示称为巴科斯范式(BNF) P ? ?1 P ? ?2 可缩写为 P ? ?1|?2|?|?n ? P ? ?n 其中,“|”读成“或”,称为P的一个候选式。 表示一个文法时,通常只给出开始符号和产生式,如上例,可表示为: G(E): E ? i | E+E | E*E | (E) 例,定义只含+,*的算术表达式的文法 G={i,+,*,(,)},{E},E, P, 其中,P由下列产生式组成: E ? i E ? E+E E ? E*E E ? (E) 定义:称?A?直接推出???,即 ?A????? 仅当A ? ?是一个产生式, 且?, ?? (VT ? VN)* 。 如果?1 ? ?2 ? ? ??n,则我们称这个序列是从?1到?n的一个推导。若存在一个从?1到?n的推导,则称?1可以推导出?n 。 对文法G(E): E ? i | E+E | E*E | (E) E ? (E) ? (E+E)? (i+E)? (i+i) 用 表示:从?1出发,经过0步或若干步,可以推出?n。 所以 : 即 或 定义:假定G是一个文法,S 是它的开始符号。如果 ,则?称是一个句型。仅含终结符号的句型是一个句子。文法G所产生的句子的全体是一个语言,将它记为 L(G)。 通常,用 表示:从?1出发,经过一步或若干步,可以推出?n。 例: (i*i+i)是文法 G(E): E ? i | E+E | E*E | (E) 的一个句子。 证明: E ? (E) ? (E+E)? (E*E+E)? (i*E+E)? (i*i+E) ? (i*i+i) E,(E),(E*E+E),…,(i*i+i)是句型。 例:文法G1(A): A ? c|Ab G1(A)的语言? L(G1)={c,cb,cbb,?} 以c开头,后继若干个b 例:文法G2(S): S ? AB A ? aA|a B ? bB|b G2(S)的语言? L(G2)={ambn|m,n0} 例:给出产生语言为{anbn|n?1}的文法。 G3(S): S ? aSb S ? ab 例:给出产生语言为{ambn|1≤n≤m≤2n}的文法。 G4(S): S ? aSb | aaSb S ? ab | aab 从一个句型到另一个句型的推导往往不唯一。 E+E?i+E?i+i E+E?E+i?i+i 最左推导:任何一步? ? ?都是对?中的最左非终结符进行替换。 最右推导:任何一步? ? ?都是对?中的最右非终结符进行替换。 递归规则与递归文法 递归规则是指那些在规则的右部含有与规则左部相同符号的规则。 例如:U→xUy,右部含有与规则左部相同符号U,那么就是递归规则。 如果这个相同的符号出现在右部的最左端,则为左递归规则。 如 U→Uy 如果这个相同的符号出现在右部的最右端,则为右递归规则。如 U→xU 若文法中至少包含一条递归规则,则称文法是直接递归的。 若文法中不含递归规则,但有推导过程 U xUy,所以该文法为间接递归文法。 递归文法使我们能用有穷的文法刻画无穷的语言。 2.3.2 语法树与二义性 用一张图来表示一个句型的推导,有助于理解句子语法结构的层次。 定义:设文法G=(VN,VT,P,S ),对于文法G的任意一个句型都存在一棵相应的语法树: 结点由符号组成。 根结点对应于开始符号。 只有非终结符号对应的结点有子结点。 一个结点和它的子结点分别对应于文法中的一个规则的左部和右部。 用一张图表示一个句型的推导,称为语法树。 (i*i+i)的语法树 E ?(E) ?(E+E) ?(E*E+E) ?(i*E+E) ?(i*
文档评论(0)