华中师范大学《编译原理》课件-第4章 语法分析.pptxVIP

华中师范大学《编译原理》课件-第4章 语法分析.pptx

  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文档。上传文档
查看更多
华东师范大学《编译原理》;句法分析方法分类;下推自动机(PDA)与2型文法;下推自动机;下推自动机;下推自动机;确定的下推自动机;下推自动机的格局;下推自动机接受的语言;下推自动机; 设计思路:要检查左右括号配对,必须记住尚未配对的左括号个数,因此建立一个下推栈,每读入一个左括号就下推一个栈符号A入栈,而每遇到一个右括号则从栈中弹出一个A,若输入串结 束且栈为空(仅剩栈底符号Z0),则输入串正确,否则输入串不是该下推自动机所接收的句子(或称句法错误)。;对w=(()());下推自动机(PDA)与2型文法;几点说明;几点说明;预测分析方法;LL(1)文法及其句法分析方法;例1(续);对输入串W的分析过程为:;表示法;FIRST和FOLLOW的性质;例2:设文法G[S]的产生式是:;LL(1)文法;LL(1)文法;例3:考察文法G[E] 引入0号产生式:(0)E”→E;SELECT(#3)=FOLLOW(E’)= FOLLOW(E) ={), } SELECT(#4)=FIRST(PT’)={(,i} SELECT(#5)={*} SELECT(#6)=FOLLOW(T’)={+} ∪FOLLOW(E’)={+,), } SELECT(#7)={(} SELECT(#8)={i} 文法G[E]是LL(1)文法。;LL(1)句法分析;LL(1)文法的句法分析表的构造;预测分析表;例4:文法G[E]的预测分析表:;亦可如下表示:;分析算法;控制矩阵方法;控制矩阵方法;例 例5:G[E]的控制矩阵为:;4/18/2023;§4.3 文法的等价变换;提取公共左公因子;最左角替换;3. 消除左递归 – 左递归可以分为直接/间接左递归 具有左递归产生式的文法不是LL(K) 例3:考察文法G[S]:;消除直接左递归;ii)采用扩展BNF表示 由(*)式可知上述文法与如下表示等价;消除间接左递归;递归下降分析方法;基本思想;实现方法;VN 编制过程A:;特别:α=α1|α2 为:if token in Set(α1);例1 文法G[E]为: E T{+T} T F{*F} F (E)|i 则递归子程序句法分析的各子程序为:主过程: Scan; call 过程E; if token =‘ ’then Accept Else Error;;过程E:;过程F: if token =‘(’ then begin match(‘(’); call 过程E; match(‘)’); end else if token =‘i’ then match(i); else Error;;习题;自底向??句法分析;对输入串W=i+i*i; 自底向上句法分析的过程是最右推导的逆,即从输入串(叶结点)开始归约直至树根。 或者说若分析树已经形成,则分析过程不断地修剪分析树,从一个句型转换为另一个句型,如上;优先分析方法;算符优先文法;定义2:对算符文法G,定义优先关系为:; 定义3:若G是算符文法且VT中任两个符号间至多只有一种算符优先关系,称G是算符优先文法。 例2:例1的文法G[E]中;为了表示分析的开始与结束,可引入产生式 E’ Z0E 规定: 对 a VT , 让Z0a、a 及Z0= 注意:算符优先关系是一种特别定义的关系,、、 =仅仅是一种“标记”,一般地它们不满足自反、传递和对称等性质。;§4.5.2 算符优先关系的计算 计算=关系较为简单,只需逐个检查算符文法的产生式即可,讨论,的计算。 算法: ‘’关系的计算算法 对每个非终结符P,如P a…或P Qa…则让a FIRSTVT(P)。 对每个P Q… 若a FIRSTVT(Q)则让a FIRSTVT(P)。 重复b)直至无新的算符加入FIRSTVT(P)。得到 FIRSTVT(P)。;b FIRSTVT(P);算符优先分析;分析算法(p74);;以及+),+i,+(;引入产生式E Z0E ,算符优先矩阵如下所示:;因为: G[E]没有形如U …VW… 的产生式。 从G[E]的算符优先矩阵中知:VT中的任意两个符号间至多只有一种优先关系。 所以文法G[E]是算符优先文法。 符号串i+i 的句法分析过程见P75 表4.5;习题;LR分析法; LR(0)文法是LR(K)文法中最简单的一类文法(K=0)。 LR(0)文法及句法分析方法是建立在构造识别可归前缀(活前缀)的确定的有限状态自动机 DFA基础之上的,并以此构造句法分析的下推自动机控制表。由于DFA可用状态转换图或状态转换表的形式表示,因此各种教科书中构造识别活前缀的DFA也有图和表二种方式,但其构造各状态的方法是一致的。 LR(k)文法是无二义性文法,因此若能判定某文法是二义性文法,则该文法肯定不是LR(k)文法;非形式描述;均不在栈中,

文档评论(0)

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

文档爱好者~

1亿VIP精品文档

相关文档