- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《编译原理》课程设计说明书_DO_WHILE循环语句的翻译程序设计(LR方法、输出三地址表示)
DO-WHILE循环语句的翻译程序设计
(LR方法、输出三地址表示)
1.系统描述
1.1设计目的
通过设计、编制、调试一个DO-WHILE循环语句的语法及语义分析程序,加深对语法及语义分析原理的理解,并实现词法分析程序对单词序列的词法检查和分析。
1.2设计内容及步骤
对循环语句: DO〈赋值语句〉WHILE 〈表达式〉
按给定的题目写出符合自身语法分析方法要求的文法和属性文法描述。
(1)按给定的题目给出语法分析方法的思想及分析表设计。
(2)按给定的题目给出中间代码序列的结构设计。
(3)完成相应的词法分析、语法分析和语义分析程序设计。
(4)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。
2文法的描述
本程序所用的文法如下:
G[S]:
(1)S-do{E;}while(B) {if B.true goto B.true else goto B.false;}
(2)B-I1 rop I2 {B.type=bool;B.val=I1.val rop I2.val;}
(3)E-I1=I2 op I3 {I1.val=I2.val op I3.val;}
(4)I-id {I.val=id.val;}
注意:rop is or ,op is +,-,*,/, id is any number or identifier
由上可知,非终结符B表示布尔表达式,E表示赋值表达式
3.语法分析方法描述及语法分析表设计
3.1语法分析方法描述
本实验采用LR分析方法对DO-WHILE语句进行语法分析。LR分析法是一种能根据当前分析栈中的符号串(通常以状态表示)和向右顺序查看输入串的K个(K=0)符号就能惟一的确定分析器的动作是移进还是归约和用哪个产生式归约,因而也就能惟一的确定句柄。LR分析法的归约过程是规范推导的逆过程,所以LR分析过程是一种规范过程。
一个LR分析器由3个部分组成:
总控程序,也可以称为驱动程序。对所有的LR分析器,总控程序是相同的。
分析表或分析函数。不同的方法分析表将不同,同一个方法采用的LR分析器不同时,分析表也不同,分析表表又可以分为动作(ACTION)表和状态转换(GOTO)表两个部分,它们都可以用二维数组表示。
分析栈,包括文法符号栈和相应的状态栈。它们均是先进后出栈。
分析器的动作由栈顶状态和当前输入符号所决定。
LR分析器工作过程示意图如图所示:
其中SP为栈顶指针,S[i]为状态栈,X[i]为文法符号栈。状态转换表内容按关系GOTO[Si,X]=Sj确定,改关系式是指当前栈顶状态为Si遇到当前文法符号为X时应转向状态Sj。X为终结符或非终结符。
ACTION[Si,a]规定了栈顶状态为Sj时遇到输入符号c[i]应该执行的动作。动作有以下四种可能:
移进:当Sj=GOTO[Si,a]成立,则把Sj移入到文法符号栈。其中i,j表示状态号。
规约:当在栈顶形成句柄为b时,则用b归约为相应的非终结符A,即当文法中有A-b的产生式,而b的长度为r,则从状态栈和文法符号栈中自栈顶向下去掉r个符号。并把A移入文法符号栈内,再把满足Sj=GOTO[Si,A]的状态移进状态栈,其中Si为修改指针后的栈顶状态。
接受acc:当归约到文法符号栈中只剩下文法的开始符号S时,并且输入符号串已结束即当前输入符是‘#’,则为分析成功。
报错:当遇到状态栈顶为某一状态下出现不该遇到的文法符号时,则报错,说明输入串不是该分发能接受的句子。
3.2语法分析表设计
3.2.1构造文法的DFA
I0:S’-.S
S-.do{E;}while(B)
I1:S’-S.
I2:S-do.{E;}while(B)
I3:S-do{.E;}while(B)
E-.I= I op I
I-.id
I4:S-do{E.;}while(B)
I5:E-I . =I op I
I6:I-id.
I7:S-do{E;.}while(B)
I8:E-I=.I op I
I-.id
I9:S-do{E;}.while(B)
I10:E-I = I. op I
I11:S-do{E;}while.(B)
I12:E-I=I op .I
I=.id
I13:S-do{E;}while(.B)
B-.I rop I
I-.id
I14:E-I=I op I.
I15:S-do{E;}while(B.)
I16:B-I .rop I
I17:S-do{E;}while(B).
I18:B-I rop .I
I19:B-IropI.
3.2.2然后写出LR分析表:
状态 ACTION GOTO Do { = ; } While ( ) Rop Op Id # S B E I 0 S2
您可能关注的文档
- 《大气污染控制工程》课程设计_铸造厂烘干炉臭气治理工艺设计.doc
- 《安全监测监控技术及应用》课程设计_烟雾检测火灾自动报警.doc
- 《嵌入式应用系统设计》课程论文_基于ARM的音频接口设计.doc
- 《嵌入式系统与应用》设计性实验报告_基于ARM的多通道仪表数据采集实验.doc
- 《嵌入式系统原理与应用》综合设计课程设计_交通信号灯控制器设计.doc
- 《山东省城市园林绿化企业资质核准系统》园林系统操作指南.doc
- 《工程测试技术》课程设计_基于单片机的LVDT位移测量传感器设计说明书.doc
- 《应用密码学》课程设计_RSA加解密的设计与实现.doc
- 《建筑供配电与照明》课程设计_某食品厂降压变电所的电气设计.doc
- 《建筑消防技术》课程设计_某教学楼消防课程设计.doc
- 《网络工程设计》课程设计报告_XX小区网络设计的方案.doc
- 《网络数据库》课程综合性实验报告_图书借阅系统数据库设计.doc
- 《网络系统集成》课程作业_校园网网络系统集成方案.doc
- 《网络协议编程》课程设计报告_ICMP扫描程序的设计与实现.doc
- 《网络数据库》课程设计报告_图书借阅管理系统.doc
- 《网络工程规划与综合布线》课程设计_辽东学院艺术学院(1、2、3层)综合布线方案.doc
- 《网络互联组网配置技术》课程设计报告_网络互联组网配置技术.doc
- 《网络系统集成》课程作业_校园网网络系统集成方案__102699615.doc
- 《网络设备》课程设计报告_访问控制列表在企业中的应用.doc
- 《能力扩展训练》课程设计说明书_基于AD转换模块的单片机仿真和C语言开发.doc
文档评论(0)