网站大量收购独家精品文档,联系QQ:2885784924

一语法分析的功能:.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一语法分析的功能:.doc

一.语法分析的功能: 语法分析是编译过程的核心部分,它的主要任务是按照和程序语言的语法规则,从由词法分析输出的源程序符号串中识别出各类语法分析成分,同时进行语法检查,为语义分析和代码生成作准备。 二.语法分析的目的: 语法分析程序以词法分析输出的符号串作为输入,在分析过程中检查这个符号串是否为该程序语言的句子。 三.语法分析的过程: 首先,定义词法分析: 词类编码表 单词 = + * : ; { } ( ) and if then while do int 标志符 编码 1 2 3 4 5 6 7 8 9 10 31 32 33 35 36 37 25 文法 说明语句 表达式 布尔表达式 句法 0、P’→P 1、P→id () L;R 2、L→L;D 3、L→D 4、D→id:int 5、E→E+T 6、E→T 7、T→T*F 8、T→F 9、F→(E) 10、F→id 11、B→B and B 12、B→idid 13、M→id=E 14、S→if B then M 15、S→while B do M 16、S→M 17、N→N;S 18、N→S 19、R→{N} 再者,语法分析: 1.构造SLR分析表LR分析表的方法是: (1)根据文法构造识别规范句型活前缀的有穷自动机DFA (2)由DFA构造SLR分析表 ?构造DFA: (1) DFA是一个五元式M=(S, V, GOTO, S0, Z) S:有穷状态集 在此具体情况下,S=LR(0)项目集规范族LR(0)。 项目集规范族:其元素是由项目所构成的集合. V:文法字汇表 S0:初始状态 GOTO:状态转移函数 GOTO[Si,X]=Sj Si ,Sj∈S Si ,Sj为项目集合 X∈Vn∪Vt 表示当前状态Si面临文法符号为X时,应将状态转移到 Sj Z:终态集合 Z=S-{S0} 即除S0以外,其余全部是终态 构造DFA方法: 1) 确定S集合,即LR(0)项目集规范族,同时确定S0 2) 确定状态转移函数GOTO 构造LR(0)的方法: SLR分析表的构造过程是先求出文法的LR(0)项目闭包集合, 然后通过该集合与follow集合就可以确定SLR分析表对于文法的LR(0)项目就是在产生式右部某处加点. 如产生式为A-XYZ则LR(0)项目: A-.XYZ A-X.YZ A-XY.Z A-XYZ. 此外还要对文法进行扩展, 加入A是文法的开始符号, 这扩展为A’-A LR(0)项目闭包集合的求法是: 1) 初时集合包含开始符号的LR(0)项目闭包运算. 2) 如果集合中存在产生式A-X.YZ, 且存在产生式Y-U, Y-.U不在该集合中时, 将 Y-.U加入该集合. 3) 当一个集合I0完成后求它的状态转换集合, 对于产生式A-X.YZ当遇到Y时状态转换成A-XY.Z, 对于集合I0的所有产生式求它的所有的状态转换集合. 重复执行制导不再有新的状态集合产生.’)={$} FOLLOW(P)={$} FOLLOW(R)={$} FOLLOW(B)= {and,then,do} FOLLOW(P’)={$} FOLLOW(P)={$} FOLLOW(R)={$} FOLLOW(B)= {and,then,do} FOLLOW(D)={;} FOLLOW(L)={;} FOLLOW(M)={;,}} FOLLOW(S)={;,}} FOLLOW(F)={*,+,),;,}} FOLLOW(T)={*,+,),;,}} FOLLOW(N)={;,}} FOLLOW(E)={ +,),;,}} 有效项目集 编号 有效项目集 编号 有效项目集 编号 有效项目集 0 P’→.P P→.id()L;R 16 M→id=E. E→E.+T 36 F→id. 37 T→F. 1 P’→P. 17 R→{N.} N→N.;S 38 E→T. T→T.*F 2 P→id.()L;R 3 P→id(.)L;R 18 R→{N}. 39 T→T*.F F→.(E) F→.id 4 P→id().L;R L→.L;D L→.D D→.id:int 19 N→N;.S M→.id=E S→.M S→.if B then M S→.while B do M 40 T→T*F. 41 F→(.E) E→.E+T E→.T T→.T*F T→.F F→.(E) F→.id 5 D→id.:int 6 D→id:.int 20 N→N;S. 7 D→id:int. 21 N→S. 8 L→D. 22 S→M. 9 P→id(

您可能关注的文档

文档评论(0)

aiwendang + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档