- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WHILE循环语句的翻译程序设计课设报告
题目:将WHILE语句转换成四元式的程序实现
设计内容及要求:设计一个语法制导翻译器,将WHILE语句翻译成四元式。要求:先确定一个定义WHILE语句的文法,为其设计一个语法分析程序,为每条产生式配备一个语义子程序,按照一遍扫描的语法制导翻译方法,实现翻译程序。对用户输入的任意一个正确的WHILE语句,程序将其转换成四元式输出(可按一定格式输出到指定文件中)。
1、系统描述
通过设计、编制、调试一个WHILE循环语句的语法及语义分析程序,加深对语法及语义分析原理的理解,并实现词法分析程序对单词序列的词法检查和分析。用语法制导完成语义分析,并将形成的中间代码以四元式的形式输出。
2 、文法及属性文法的描述
2.1 文法的描述
该文法的产生式如下所示:
(1)S-while(B){E}
(2)E-AE
(3)E-A
(4)A-iPA
(5)A-i
(6)B-iTi
(7)B-i
其中while、( 、) 、{ 、} 、P、T 、 ; 和i均为终结符,而S、A、B、E这些大写字母均为非终结符。T表示比较运算符,P表示算术运算符,i表示合法标识符。
2.2 属性文法的描述
对该文法的属性文法描述如下:
(1) S-while(B){E} prinf(if B goto E else goto next)
(2) E-AE print(E.val = A.val·E.val)
(3) E-A print(E.val = A.val)
(4) A-i P A print(A= i.Val P A.Val)
(5) A-i; A.Val = i;
(6) B-i T i print(B = i1.Val T i2.Val)
(7) B-i B.Val = i
3 、语法分析方法描述及语法分析表设计
3.1 语法分析表设计
3.1.1 文法的DFA
3.1.2 LR(0)分析表
状态 while ( ) { } i op rop ; # S E B A 0 S2 1 1 Z 2 S3 3 S5 4 4 S6 5 r7 S7 6 S9 7 S8 8 r6 9 S14 11 10 10 r3 S14 13 10 11 S12 12 r1 13 r2 14 S15 S17 15 S14 16 16 r4 r4 17 r5 r5
3.1.2 LR(0)分析方法描述说明
LR分析法的规约过程是规范推到的逆过程,所以LR分析过程是一种规范规约的过程。其分析过程为:由文法构造出该文法项目集,再根据项目集构造该文法的DFA,再判断是否有移进-规约和规约-规约冲突,若没有冲突则该文法为LR(0)的,若有冲突则该文法是SLR(1)的,最后可以构造出LR(0)分析表。然后根据LR(0)分析表进行语法分析,分析过程就是进栈和规约的过程。若能规约出开始符S,则语法正确。反之,语法错误。
4 、中间代码形式的描述及中间代码序列的结构设计
本系统中所采用的中间代码形式是四元式,是一种比较普遍采用的形式。四元式的四个组成成分是:算符op,第一和第二运算对象ARG1和ARG2及运算结果RESULT。运算对象和运算结果有时指用户自己定义的变量,有时指编译程序引进的临时变量。例如a:=b*c+b*d的四元式表示如下:
1)(*,b,c,t1)
2)(*,b,d,t2)
3)(+,t1,t2,t3)
4)(:=,t3,-,a)
四元式对中间结果的引用必须通过给定的名字,也就是说,四元式的联系是通过临时变量实现的。
将while( B rop C )goto L写成(jrop,B,C,L)
本程序中所用到的四元式语句如下:
1)形如(op,arg1,arg2,result)的赋值语句
2)形如(jrop,B,C,L)的条件转移
文档评论(1)