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

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

ID:6801232

大小:492.50 KB

页数:31页

时间:2018-01-26

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

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

1、编译原理课程设计C语言词法分析器语法分析器            姓名:某某某学号:班级:软件一班学院:信息科学与技术学院2014年11月17日31目录1C语言词法分析器的设计31.1实验目的31.2实验要求31.3实验环境31.4实现分析31.4.1词法分析的理论构架31.4.2程序入口设计41.4.3程序执行中的流程41.4.4程序的出口设计51.5源代码51.6结果分析81.7收获与体会112语法分析器122.1实验目的122.2实验要求122.3实验环境122.4实现分析122.4.1LL(1)分析方法的思想122.4.2程序的入口分析122.4.3程序运行的

2、流程132.4.4程序的出口设计142.5源代码142.6结果分析272.7收获与体会30参考文献:31311C语言词法分析器的设计1.1实验目的通过设计、编制、调试一个具体的词法分析程序,加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。1.2实验要求所编写的词法分析器要能对最基本的C语言程序进行词法分析。1.3实验环境1.Windows7操作系统2.华硕笔记本,内存4G,处理器i53.装有MicrosoftVisualStudio2010,并安装framework4.01.4实现分析1.4.1词法分析的理论构架词

3、法分析器的功能输入源程序,按照构词规则分解成一系列单词符号。单词是语言中具有独立意义的最小单位,包括关键字、标识符、运算符、界符和常量等(1)C语言的关键字经过搜索共有32个,是由程序语言定义的具有固定意义的标识符。我编写的词法分析器只将其中的一部分常用的定义在程序中,他们有"break","case","char","const","continue","default","do","double","else","enun","extern","float","for","goto","if","int","long","return","static","str

4、uct","switch","sizeof","typedef","union","unsigned","void","volatile","while"而对于C语言的一些保留字如“main”、“return”等我没有将其放入关键字的范围内。(2)标识符用来表示各种名字,如变量名,数组名,过程名等等。(3)常数 常数的类型一般有整型、实型、布尔型、文字型等。31(4)运算符我在本词法分析器里面定义了“+”、“-”、“*”、“/”四种运算符。(5)界符我则定义了如下11种 ','';''.''('')''['']''='':''{''}'1.1.1程序入口设计次法分析入

5、口的设计方法很多,为了我们每次运行时方便起见,我们将我们的C语言程序放入一个txt文件中,每次我们运行程序时,程序将自行读取文件中的C语言代码,并将对其进行词法分析将分析结果输出到控制台,这样的输入方法避免了我们重复输入程序的问题,我们需要对某程序进行词法分析时,我们只需要将我们的C语言程序拷贝到我们的txt文件中,运行程序即可进行词法分析了。开始1.1.2程序执行中的流程打开txt文件读取C语言代码扫描、是否读取到相应字符NNNNNNYYYYYY界符?关键字?标识符?运算符?常数?记录标号记录标号记录标号记录标号记录标号输出结束311.1.1程序的出口设计上面我们讲

6、解了我们词法分析器的入口,但是我们的输出是怎样设计的呢。首先为了使我们的程序有参考对照,我将我们的C语言程序首先输出到控制台上,以便与后面的词法分析是做一个参考,无需再去打开我们相应的txt文件做对照了。其次,我将我的关键字和相应的界符以及相应的运算符都编上一个序号,并且将其一一个二元式的方式输出到控制台上,以便灾后面的词法分析结果中形成对比。最后我们将词法分析的结果输出到控制台上,输出格式为,我们将每一句代码作为一个单位,在每句代码后面我们将给出本局代码分析得到词法分析后的字符标号。例如:Typedefstruct{

7、22

8、19

9、其意义就是Typedef和struc

10、t对应的标号为22和19这两种种别1.2源代码//cifa.cpp:定义控制台应用程序的入口点。#include"stdafx.h"#include#include#include#include#include#include#includeusingnamespacestd;boolisLetter(charch){if((ch>='A'&&ch<='Z')

11、

12、(ch>='a'&&ch<='z'))returntrue

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

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

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