编译原理

5简要的分析与概要设计

5.1在该程序中,总共包括3个主要功能,第一个功能是对输入的布尔语句 进行递归下降的分析,从而得出从文法到该布尔语句的推导过程,第二个功能是使用递归下降的方法,该布尔语句的四元式序列,第三个功能对四元式序列进行扫描并分析每个四元式的结构特点,并据此将四元式转化为逆波兰式。 5.2程序流程图如下

输入逻辑表达式 读取第一个单词 是否为not或操作数 输出错误信息,结束 压栈操作 读下一个单词 是否为结束符#号 出栈操作 输出四元式 结束

7软件的测试方法和测试结果

输入一个字符串,执行改程序,观察产生的四元式以及逆波兰式是否正确。 测试数据1:not a and b or c and d or c#

测试数据2

A and b or c and d#

测试数据3

a and b and c and d#

8设计的特点、不足收获与体会

8.1设计的特点

这次课程设计中,使用递归下降分析方法完成了布尔语句的翻译,程序不仅按照题目要求的到了翻译的逆波兰式,而且还求出了布尔语句的推导过程和四元式,实现的功能比较多,对翻译的过程和结果有一个比较全面的描述。程序的逻辑明确,易于理解。

8.2设计的不足

由于程序设计水平有限,在本次课程设计的程序中存在着两个主要问题: (1):没有在递归下降的过程中直接求出逆波兰式,而是根据生成的四元式序列产生的逆波兰式,虽然可以达到题目的要求,但是程序的效率比较低。 (2):在递归下降生成逆波兰式的过程中,由于最小单元函数中读入”not”以及”(”的分支中出现了问题,导致了在调试过程中not语句以及括号中语句必须放在最后,否则在分析完该单元之后程序不再继续向后扫描。导致了布尔语句分析不全。

8.3收获与体会

在何老师的指导下,经过三天的编码与调试,我终于完成了这次课程设计,通

过本次课程设计,我更加认识到了编译原理这门课的重要性,对于这门课在实践中是如何应用的有了一个更深的理解。虽然程序中有很多错误与漏洞,但是我仍然获得了很多,我不仅熟练地掌握了递归下降分析的方法,更加强了自己程序设计的能了,认识到了实践的重要性。

9参考文献

《编译原理》,主编:胡伦俊、徐兰芳、骆婷,出版社:电子工业出版社,出版时间:2005年12月

《程序设计语言编译原理》(第3版),主编:陈火旺、刘春林等,出版社:国防工业出版社,出版时间:2003年2月

《编译原理》(第二版),主编:吕映芝、张素琴、蒋维杜,出版社:清华大学出版社,出版时间:2004年11月

《编译原理》,主编:张幸儿,出版社:科学出版社,出版时间:1999年4月 《Compilers:Principles,Techniques,and Tools》,主编:Alfred V A,Ravi S, Ullman J D, 出版社:人民邮电出版社,出版时间:2002年2月

《编译原理与技术》(第二版),主编:陈意云,出版社:中国科学技术大学出版社, 出版时间:2002年1月

《编译原理实践教程》,主编:胡元义、邓亚玲、胡英,出版社:西安电子科技大学出版社, 出版时间:2002年1月

《编译原理课程设计》,主编:王雷、刘志成、周晶,出版社:机械工业出版社, 出版时间:2005年3月

《编译原理学习指导》,主编:胡元义、柯丽芳,出版社:西安电子科技大学出版社, 出版时间:2004年1月

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4