编译原理课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.来自百度文库.2、语法分析功能介绍及分析
语法分析会利用词法分析是产生的 token 表,逐一向下扫描,一次读入一个 单词,来识别各函数:
在实验中,语法分析阶段,我负责的是 If 语句、do…while 语句、for 语句 的函数编写。下面分别介绍分析各个函数的编写思路和过程。
If 语句的识别(ifs):当总控程序遇到 if 语句的时候调用此函数,函数接收 由总控程序传递而来的指针(tknum)之后,首先调用布尔表达式(bexp)进行 布尔表达式的识别,识别之后调用赋值表达式(assign)识别,此时有三种情况:
4.1、实验部分问题分析及相关原理介绍
4.1.1、词法分析功能介绍及分析
词法分析的功能是从源程序中读入一个个字符,一句一定的构词规则,识别 出各类有用的单词:在试验中我负责的是识别字符常数、界符、标识符、关键字 的函数编写。下面分别介绍分析各个函数的编写思路和过程。
识别字符常数:如果读入的第一个字符为字母,继续向下读直到读到的字符 不为字母,则这段字符串为字符常数。
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 -
2011-2012 学年第二学期
《编译原理》课程设计报告
学 院: 计算机科学与工程学院
班 级:
学生姓名:
学号:
成 绩:
指导教师:
时间: 2012 年 5 月
目录 一、课程设计的目的----------------------------------------------------------------- - 1 二、课堂实验及课程设计的内容--------------------------------------------------- - 1 -
VS2008 引入了 250 多个新特性,整合了对象、关系型数据、XML 的访问方 式,语言更加简洁。使用 Visual Studio 2008 可以高效开发 Windows 应用程序。 设计器中可以实时反映变更,XAML 中智能感知功能可以提高开发效率。同时 Visual Studio 2008 支持项目模板、调试器和部署程序。Visual Studio 2008 可以高 效开发 Web 应用,集成了 AJAX 1.0,包含 AJAX 项目模板,它还可以高效开发 Office 应用和 Mobile 应用。
关键字,界符:程序首先定义一个结构体 entry,属性有种别码和单词本身, 实例化一个关键字结构体数组 keyword,把 C 语言中的关键字,运算符,界符等 单词本身与种别码填入到 keyword 数组当中,并自定义出整常数、实常数、字符 常数、布尔常数及标识符 id 的种别码,填入到 keyword 数组中。当程序读入的 一个字符时,首先判断该字符时属于字母、数字或是运算符,保存为一个字符串, 把该字符串与 keyword 数组中的单词相比较,如果匹配成功就把该单词与种别码 加入到 Token 表中,判断该字符串如果是标识符或常数,把该字符串与其种别码 加入到符号表中。
微软开发者部门的副总裁索玛塞加在其博客中表示,尽管 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。
2.2、课程设计内容
词法分析器的设计与实现 利用 visual studio2008 可视化编程工具编写 C 语言的可视化编译平台,包括 源文件编辑器、词法分析、语法分析、语义分析与中间代码生成,要求具有调试 和生成 TOKEN 表、符号表、四元式表、错误信息等功能。
-1-
三、visual studio 2008 简介
-3-
①没有 else:直接退出 ifs 函数。②有 else:判断 else 之后调用赋值表达式(assign) 进行识别。③为 else if :因为此种语句相当于 if 的嵌套,所以只将指针读取到 if,调用 ifs 函数进行判断即可。
Do…while 语句的识别:当总控程序遇到 do…while 语句时调用此函数,函 数接收由总控程序传递而来的参数(tknum)之后,do 后面是一个赋值表达式, 所以调用 assign 函数进行识别,指针到了 while 的时候,+1 并调用布尔表达式 (bexp)进行布尔表达式的识别。
微软在今年的合作伙伴会议上还宣布,其 Software Licensing and Protection Services 产品将于今年 10 月份发布。它包含帮助 ISV 在内的开发人员保护知识 产权、开发和许可产品版本、跟踪产品和特性使用、与后端过程整合的工具。
-2-
四、问题分析及相关原理介绍
I
一、课程设计的目的
通过设计、编写和调试词法分析程序(又称扫描器),了解扫描器的组成结 构,不同种类单词的识别方法,加深了对词法分析作用的理解。进一步巩固课堂 上所学的理论知识,深化理解高级语言在计算机中的执行过程,加深对编译原理 中重点算法和编译技术的理解,提高自己的编程能力,培养好的程序设计风格。 同时通过某种可视化编程语言的应用,具备初步的 Windows 环境下的编程思想。
For 语句的识别:当总控程序遇到 for 语句时调用此函数,函数接收由总控 程序传递而来的参数(tknum)之后,因为 for 语句的结构 for(①赋值表达式|变 量;②布尔表达式;③A++|--),所以,先判断①是否有“=”,有则调用赋值表 达式(assign)进行识别,没有则是一个变量,此处不用识别,判断是否有分号 之后指针指向②,此时调用布尔表达式(bexp)进行判断,判断分号之后,指针 指向③,由于编程能力有限,此处只识别 A++或 A--(A 为变量名)类型,结束 之后进入 for 语句的执行语句,调用赋值表达式(assign)即可。
2.1、课堂实验内容-------------------------------------------------------------- - 1 2.2、课程设计内容-------------------------------------------------------------- - 1 三、visual studio 2008 简介------------------------------------------------------- - 2 四、问题分析及相关原理介绍------------------------------------------------------ - 3 4.1、实验部分问题分析及相关原理介绍----------------------------------- - 3 -
如果您是软件开发人员,您一定会对下一代 Visual Studio 2008 的外壳感兴 趣,一个好的开发环境可以让开发工作事半功倍,微软公布了最新版 Visual Studio Shell 的预览,一起来看一下:我们可以发现新版 VS 的开发界面分为两个版本: 整合模式和孤立模式,分别对基于语言的开发和基于特别工具的开发作了优化。 并将 Iron Python 引入了 Visual Studio,该界面将在 Visual Studio 2008 的 Beta2 版 本中出现。
二、课堂实验及课程设计的内容
2.1、课堂实验内容
利用 Visual Studio 2008 进行编译器的编写,其中我负责的代码部分有: a、词法分析 识别字符常数、界符、标识符、关键字的函数编写 b、语法分析 If 语句、do…while 语句、for 语句的函数编写 c、语义分析及中间代码生成 说明语句、赋值语句、算数表达式的翻译函数编写
相关文档
最新文档