当前位置:首页 > FOR循环语句的翻译程序设计(递归下降法、输出四元式表示)
武汉理工大学《编译原理》课程设计说明书
6.2
测试结论
经过测试,可以得知,结果程序能达到预计的要求:对合法程序进行词法分析和简单优先的语法分析,并生四元式表示的中间代码;对于错误的程序输入,结果程序能够判断其出错。
本次设计的文法是: S->for(A){G} A->D id P D->E id O F E->id=F F->id P->++|-- O-> <|> G->GB B->ID=S1 s1->TE1 T->FT1
E1->+TE1|&|-TE1 T1->*FT1|&|-TE1 X->B|& */
当输入的程序缺少do时,将会提示error do,表明输入出错。又因为该文法实现的设计是i=j这一赋值语句,当缺少了赋值符号“=”时,系统将会提醒赋值语句缺少赋值运算符这一错误现象。
存在问题:对于含有非法输入符号的程序,结果程序没有很好地处理,程序健壮性不强。例如当我输入的程序为:For i=1 step -1 until 10 do k=j#,该程序处理时把-1的负号给省略掉了,把这一语句和语句For i=1 step 1 until 10 do k=j#当做相同的进行处理。这是程序设计考虑不周到的地方。
- 17 -
武汉理工大学《编译原理》课程设计说明书
7、课程设计总结
在做本次试验之前我对递归下降原理不是很了解,在查阅了相关资料后,对此有了深
入了解,只要理解了分析方法的实现原理,编写程序判断出入字符串是否满足给定的文法比较简单。通过阅读大量相关书籍,利用网络查找各种资料,根据相关知识,我终于写出了符合递归下降法的关于for语句的属性文法。
此次设计对for语句进行了全面词法分析和语法分析,并得到了用于分析for 语句的结果程序。结果程序能对用户输入的程序代码进行分析,判断是否存在词法错误和语法错误,如果出现错误,向用户给出提示,如果没有错误,则生成于输入程序等价的中间代码,方便后续编译过程工作。本课程设计是for循环语句的翻译程序,包括词法分析部分、语法分析部分和中间代码生成部分。词法分析阶段是编译过程的第一个阶段,是编译的基础。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词。语法分析部分采用递归下降分析方法进行语法分析,判断给出的符号串是否为该文法识别的句子。中间代码生成器部分主要实现三元式的生成,将用中缀式表示的算术表达式转换为用三元式表示的算术表达式。
在整个编译器设计过程中,遇到了很多意想不到的困难,其主要原因是对各个部分要实现的功能考虑不够周全,例如对空白符、跳格符、回车符和换行符等编辑性字符的处理,及删除注解等。这些在程序设计初期实现都比较困难,经过努力,在后期这些问题都得到了比较有效的解决。在语法分析的设计过程中,程序相当复杂,需要利用到大量的编译原理,其中在对输入字符串的移进和归约冲突得不到很好的处理,造成了调试的困难。通过多次调试,最终构造出来分析表并调试成功。
通过本次课程设计,将编译的理论知识应用于实践,加深了对课本理论知识的理解,更好的掌握了编译技术的基本方法,了解了编译程序的一般分析过程,并且通过对for语句编译程序的设计和实现,对for语句也加深了认识和理解。此次课程设计对自己的编程能力的提升有很大帮助。
- 18 -
武汉理工大学《编译原理》课程设计说明书
8、参考文献
[1]张素琴、吕映芝、蒋维杜、戴桂兰等.编译原理(第二版).清华大学出版社.2005
年2月
[2]何炎祥.编译原理(第二版).武汉:华中科技大学出版社.2005年8月
- 19 -
共分享92篇相关文档