编译原理_第2章_文法与语言.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2.2 句型的语法树和文法的二义性 文法G=({E,T,F},{+,*,i,(,)},P,E),其中P为: E?E+T|T T?T*F|F F?(E)|i 句子i+i*i的规范归约为: E E ?E+T ?E+T*F T ?E+F*i F ?E+i*i T ?T+i*i E ?F+i*i T ?i+i*i + * i i F 何时能够规约?利用哪个产生式进行规约? 根据读入字符及现有句型,判断是否为句柄,如为句柄,则进行规约。 E E + T T * F i i T F i F ?E+T*i F i 2.2 句型的语法树和文法的二义性 规范归约算法: 符号栈S[k]:存放句型的前缀,初始值为”#”; 输入缓冲区R:存放要识别的串,初始值为”i+i*i#”; 单元a:从R左侧读入符号并归约,直到读到结束符”#”。 算法: S1:置初值a=“”; k=1; s[1]=“#”; S2:从R中读入下一个符号到a; S3:若s[k]的内容=“#E”且a=“#”,则归约成功,结束;否则转S4; S4:s[k]栈顶部分为当前句型的句柄,转S5;否则转S6; S5:s[k]栈顶部分用一个产生式左部代替; S6:a中符号移进s[k],转S2; S7:End。 2.2 句型的语法树和文法的二义性 文法G=({E,T,F},{+,*,i,(,)},P,E),其中P为: E?E+T|T T?T*F|F F?(E)|i 句子i+i*i的规范归约为: 2.3 小结 (1) 文法 (2) 句型、句子、语言,文法和语言的构造 (3) 递归文法 (4) 规范推导和规范规约 (5) 短语、直接短语、句柄 (6) 文法的Chomsky分类 (7) 文法产生式的其它表示法 2.3 小结 (1) 语法树 (2) 文法的二义性的判定 (3) 规范归约算法 句型 短语 句柄 某个句型是否存在两种推导 某个句型是否存在两棵语法树 * I will greet this lecture with love in my heart. 主讲人:韩士元 Email: shiyuanhan@126.com Tel: +86 基本概念 字母表、符号、符号串、闭包等 文法的定义 文法的分类 Chromsky 对文法的分类 文法和语言 推导、归约、句型、句子、语言 语法分析树和二义性 第二章 文法和语言 2.1 文法和语言的定义 例句:int i = 0; 包含字母i, n, t, =, 0, ; , 所有字母形成字母表; 符号串,如int 定义2.1 字母表:字母表∑是符号元素的非空有限集合。 定义2.2 符号(字符):字母表中的元素。 定义2.3 符号串(字符串):字母表中的符号所组成的任何有穷序列。 如字母表∑={a,b},则a,b是字母表∑中的元素,a,b,aa,ab,…都是符号串。 空符号串:不含任何符号的符号串,用ε表示。 字母表,符号,符号串 2.1 文法和语言的定义 定义2.4 符号串x和y的连接:指x和y的符号按先后顺序排列在一起组成的新的符号串,用xy表示。 例:若∑={a,b}, x=ab, y=ba, 则xy=abba, yx=baab。 注意:(1)xy≠yx; (2)εx=xε=x。 定义2.5 符号串的长度:指符号串中符号的个数。 例:|ab|=2, |aabb|=4, |ε|=0。 字符串连接、字符串长度 2.1 文法和语言的定义 定义2.6 符号串的前缀和后缀:分别指符号串的左部和右部任意字符串。 例:ab的前缀有ε、a、ab;后缀有ε、b、ab。 定义2.7 符号串集合的乘积:设A、B是字母表∑上的符号串集合,则定义A与B的乘积:AB={xy|x∈A,y∈B}。 例:设∑={a,b,c,d},令A={aa,bb},B={cc,dd}, 则 AB={aacc, aadd, bbcc,bbdd}, BA={ccaa,ccbb,ddaa,ddbb}。显然AB≠BA 定义空集合:Φ={ε},有{ε}A=A{ε}=A。 前缀、后缀、乘积 2.1 文法和语言的定义 定义2.8 符号串的方幂:设x是符号串,则:x0=ε, x1=x, x2=xx, …, xn=x…x(n个) 定义2.9 符号串集合A的方幂:A0={ε}, A1=A, A2=AA, …, An=A…A(n个A) A的正闭包:A+=A1∪A2∪… A的闭包:A*=A0∪A1∪A2∪… 显然:A*= A0∪A+, A+=AA* 问题:A = {0,1}, 则A+表示的集合意义? 方幂、正闭包、闭包 2.1 文法和语言的定义 什

文档评论(0)

0520 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档