编译原理词法分析器语法分析课程设计

编译原理词法分析器语法分析课程设计

ID:37149364

大小:590.00 KB

页数:26页

时间:2019-05-19

编译原理词法分析器语法分析课程设计_第1页
编译原理词法分析器语法分析课程设计_第2页
编译原理词法分析器语法分析课程设计_第3页
编译原理词法分析器语法分析课程设计_第4页
编译原理词法分析器语法分析课程设计_第5页
资源描述:

《编译原理词法分析器语法分析课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《编译原理》课程设计院系信息科学与技术学院专业软件工程年级2011级学号20112723姓名林苾湲西南交通大学信息科学与技术学院2013年12月25目录课程设计1词法分析器21.1设计题目21.2设计内容21.3设计目的21.4设计环境21.5需求分析21.6概要设计21.7详细设计41.8编程调试51.9测试111.10结束语13课程设计2赋值语句的解释程序设计142.1设计题目142.2设计内容142.3设计目的142.4设计环境142.5需求分析152.6概要设计162.7详细设计162.8编程调试242.9测试24

2、2.10结束语2525课程设计一词法分析器设计一、设计题目手工设计c语言的词法分析器(可以是c语言的子集)。二、设计内容处理c语言源程序,过滤掉无用符号,判断源程序中单词的合法性,并分解出正确的单词,以二元组形式存放在文件中。三、设计目的了解高级语言单词的分类,了解状态图以及如何表示并识别单词规则,掌握状态图到识别程序的编程。四、设计环境该课程设计包括的硬件和软件条件如下:4.1.硬件(1)IntelCoreDuoCPUP8700(2)内存4G4.2.软件(1)Window732位操作系统(2)MicrosoftVisua

3、lStudioc#开发平台4.3.编程语言C#语言五、需求分析5.1.源程序的预处理:源程序中,存在许多编辑用的符号,他们对程序逻辑功能无任何影响。例如:回车,换行,多余空白符,注释行等。在词法分析之前,首先要先剔除掉这些符号,使得词法分析更为简单。5.2.单词符号的识别并判断单词的合法性:将每个单词符号进行不同类别的划分。单词符号可以划分成5中。(1)标识符:用户自己定义的名字,常量名,变量名和过程名。(2)常数:各种类型的常数。(3)保留字(关键字):如if、else、while、int、float等。(4)运算符:如

4、+、-、*、<、>、=等。(5)界符:如逗号、分号、括号等。5.3.将所有合法的单词符号转化为便于计算机处理的二元组形式:(单词分类号,单词自身值);以图形化界面显示出来。5.4.可选择性地将结果保存到文件中。六、概要设计6.1.数据类型6.1.1.单词的分类:本词法分析器演示的是C语言的一个子集,故字符集如下:25(1)标识符:以字母开头的字母数字串。(2)整数或浮点型(3)保留字:auto,break,case,char,const,continue,default,do,double,else,enum,extern

5、,float,for,goto,if,int,long,register,return,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile,while(4)运算符:+、-、*、/、%、>、<、=、!=、==、<=、>=、++、--、!、&、&&、

6、

7、;(5)界符:[]{}():;‘“#,6.1.2.单词二元组:(单词分类号,单词自身值)表6.1单词分类表单词分类号标识符1常数2保留字3界符4运算符56.2.词法分析器的结

8、构源程序输入缓冲区预处理子程序扫描缓冲区1扫描缓冲区2词法分析子程序调用数据返回—单词图6.1词法分析器的结构6.3.部分单词的正规式与状态转换图图6.2部分单词的状态转换图6.4.功能模块表6.2词法分析器的C#程序过程或函数功能表25过程或函数名简要功能说明GetTokens()分析源程序得到单个单词并大致区分其类型,并生成二元组GetInput(stringget)输入源程序NoWs(stringaCopy,intcp)去除源程序中的空格符GetTokenType最终确定标识符和保留字OutPut输出二元组到指定的.

9、txt文件中GetResult输出二元组七、详细设计7.1.总体流程图开始输入C语言源程序初始化source逐个遍历字符,并去除空格符State为0进入switch分支循环判断根据state的值选择适当的处理调用相关函数输出处理结果开始图7.1程序总体流程图7.2.主要分支选择算法介绍7.2.1case0情况算法25开始State为0进入case0是否为界符前一个字符和单词最开始的字符是否为数字对应为哪种界符编码输出结果State置0编号截取该数值输出结果是否为单目运算符是否为数字是否为字母State=10标记该位置为数字

10、开始处State=11记该处为字符开始处State对应更改进入对应选择分支词法出错输出错误原因以及行列结束是是是是是否否否否否图7.2部分分支流程图八、编程调试8.1主要源代码//逻辑操作类与函数usingSystem;usingSystem.Collections.Generic;usingSyste

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。