当前位置:文档之家› 编译原理课程设计报告

编译原理课程设计报告

2011-2012学年第二学期《编译原理》课程设计报告学院:计算机科学与工程学院班级:学生姓名:学号:成绩:指导教师:时间:2012年5 月目录一、课程设计的目的 ---------------------------------------------------------------- - 1 -二、课堂实验及课程设计的内容 -------------------------------------------------- - 1 -2.1、课堂实验内容-------------------------------------------------------------- - 1 -2.2、课程设计内容-------------------------------------------------------------- - 1 -三、visual studio 2008 简介------------------------------------------------------- - 2 -四、问题分析及相关原理介绍 ----------------------------------------------------- - 3 -4.1、实验部分问题分析及相关原理介绍 ---------------------------------- - 3 -4.1.1、词法分析功能介绍及分析------------------------------------- - 3 -4.1.2、语法分析功能介绍及分析------------------------------------- - 3 -4.1.3、语义分析功能介绍及分析------------------------------------- - 4 -4.2、课程设计部分问题分析及相关原理介绍 ---------------------------- - 5 -4.2.1、编译程序介绍 ----------------------------------------------------- - 5 -4.2.2、对所写编译程序的源语言的描述(C语言) -------------- - 6 -4.2.3、各部分的功能介绍及分析 -------------------------------------- - 7 -4.3、关键算法:单词的识别-------------------------------------------------- - 8 -4.3.1、算法思想介绍 ----------------------------------------------------- - 8 -4.3.2、算法功能及分析 -------------------------------------------------- - 8 -五、设计思路及关键问题的解决方法 ------------------------------------------ - 10 -5.1、编译系统------------------------------------------------------------------ - 10 -5.1.1、设计思路 --------------------------------------------------------- - 10 -5.2、词法分析器总控算法--------------------------------------------------- - 12 -5.2.1、设计思路 --------------------------------------------------------- - 12 -5.2.2、关键问题及其解决方法 --------------------------------------- - 13 -六、结果及测试分析-------------------------------------------------------------- - 14 -6.1、软件运行环境及限制--------------------------------------------------- - 14 -6.2、测试数据说明------------------------------------------------------------ - 14 -6.3、运行结果及功能说明--------------------------------------------------- - 16 -6.4、测试及分析说明--------------------------------------------------------- - 16 -七、总结及心得体会 --------------------------------------------------------------- - 17 -7.1、设计过程------------------------------------------------------------------ - 17 -7.2、困难与收获 ------------------------------------------------------------- - 17 -八、参考文献 ------------------------------------------------------------------------ - 18 -一、课程设计的目的通过设计、编写和调试词法分析程序(又称扫描器),了解扫描器的组成结构,不同种类单词的识别方法,加深了对词法分析作用的理解。

进一步巩固课堂上所学的理论知识,深化理解高级语言在计算机中的执行过程,加深对编译原理中重点算法和编译技术的理解,提高自己的编程能力,培养好的程序设计风格。

同时通过某种可视化编程语言的应用,具备初步的Windows环境下的编程思想。

二、课堂实验及课程设计的内容2.1、课堂实验内容利用Visual Studio 2008进行编译器的编写,其中我负责的代码部分有:a、词法分析识别字符常数、界符、标识符、关键字的函数编写b、语法分析If语句、do…while语句、for语句的函数编写c、语义分析及中间代码生成说明语句、赋值语句、算数表达式的翻译函数编写2.2、课程设计内容词法分析器的设计与实现利用visual studio2008可视化编程工具编写C语言的可视化编译平台,包括源文件编辑器、词法分析、语法分析、语义分析与中间代码生成,要求具有调试和生成TOKEN表、符号表、四元式表、错误信息等功能。

三、visual studio 2008 简介VS2008引入了250多个新特性,整合了对象、关系型数据、XML的访问方式,语言更加简洁。

使用Visual Studio 2008可以高效开发Windows应用程序。

设计器中可以实时反映变更,XAML中智能感知功能可以提高开发效率。

同时Visual Studio 2008支持项目模板、调试器和部署程序。

Visual Studio 2008可以高效开发Web应用,集成了AJAX 1.0,包含AJAX项目模板,它还可以高效开发Office应用和Mobile应用。

如果您是软件开发人员,您一定会对下一代Visual Studio 2008的外壳感兴趣,一个好的开发环境可以让开发工作事半功倍,微软公布了最新版Visual Studio Shell的预览,一起来看一下:我们可以发现新版VS的开发界面分为两个版本:整合模式和孤立模式,分别对基于语言的开发和基于特别工具的开发作了优化。

并将Iron Python引入了Visual Studio,该界面将在Visual Studio 2008的Beta2版本中出现。

微软开发者部门的副总裁索玛塞加在其博客中表示,尽管Visual Studio 2008软件开发平台是2008年2月份一次产品开发活动的一部分,微软计划于2007年年底开始销售这款产品。

据InfoWorld网站报道称,本周早些时候,微软宣布将在于2008年2月27日举办的一次产品发布会上发布Visual Studio 2008、Windows Server 2008、SQL Server 2008。

微软曾表示计划在今年晚些时候发售Visual Studio 2008。

索玛塞加表示,微软仍然计划在2007年发布这款产品。

他说,尽管我们将在明年2月份集中发布数款产品,但根据客户的反馈,我们仍然计划在今年年底时发售Visual Studio 2008和.Net FX 3.5。

微软在今年的合作伙伴会议上还宣布,其Software Licensing and Protection Services产品将于今年10月份发布。

它包含帮助ISV在内的开发人员保护知识产权、开发和许可产品版本、跟踪产品和特性使用、与后端过程整合的工具。

四、问题分析及相关原理介绍4.1、实验部分问题分析及相关原理介绍4.1.1、词法分析功能介绍及分析词法分析的功能是从源程序中读入一个个字符,一句一定的构词规则,识别出各类有用的单词:在试验中我负责的是识别字符常数、界符、标识符、关键字的函数编写。

下面分别介绍分析各个函数的编写思路和过程。

识别字符常数:如果读入的第一个字符为字母,继续向下读直到读到的字符不为字母,则这段字符串为字符常数。

关键字,界符:程序首先定义一个结构体entry,属性有种别码和单词本身,实例化一个关键字结构体数组keyword,把C语言中的关键字,运算符,界符等单词本身与种别码填入到keyword数组当中,并自定义出整常数、实常数、字符常数、布尔常数及标识符id的种别码,填入到keyword数组中。

当程序读入的一个字符时,首先判断该字符时属于字母、数字或是运算符,保存为一个字符串,把该字符串与keyword数组中的单词相比较,如果匹配成功就把该单词与种别码加入到Token表中,判断该字符串如果是标识符或常数,把该字符串与其种别码加入到符号表中。

4.1.2、语法分析功能介绍及分析语法分析会利用词法分析是产生的token表,逐一向下扫描,一次读入一个单词,来识别各函数:在实验中,语法分析阶段,我负责的是If语句、do…while语句、for语句的函数编写。

下面分别介绍分析各个函数的编写思路和过程。

If语句的识别(ifs):当总控程序遇到if语句的时候调用此函数,函数接收由总控程序传递而来的指针(tknum)之后,首先调用布尔表达式(bexp)进行布尔表达式的识别,识别之后调用赋值表达式(assign)识别,此时有三种情况:①没有else:直接退出ifs函数。

相关主题