- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C源代码单词扫描程序
院 系:计 算 机 学 院
实验课程:编译原理实验
实验项目:C++源代码单词扫描程序(词法分析)
指导老师:黄煜廉
实验项目
C++源代码单词扫描程序(词法分析)
实验要求
C++源代码扫描程序识别C++记号。C++语言包含了几种类型的记号:标识符,关键字,数(包括整数、浮点数),字符串、注释、特殊符号(分界符)和运算符号等。
打开一个C++源文件,打印出所有以上的记号。
要求应用程序应为Windows界面。
选作部分:为了提高C++源程序的可读性,C++程序在书写过程中加入了空行、空格、缩进、注释等。假设你想牺牲可读性,以节省磁盘空间,那么你可以存贮一个删除了所有不必要空格和注释的C++源程序的压缩文本。因此,程序中还应该有这样的压缩功能。
选作部分:进一步思考或实现——如何进一步实现减小源文件大小的压缩功能。
应该书写完善的软件文档。
需求分析
根据所需的功能程序应分为分析关键字、分析标识符、分析数字、分析串、分析注释、分析特殊字符和过滤多余字符几部分。
关键字有iostream.h.main.while .goto include for break case if struct class等。
过滤字符要考虑到空格和换行。
实验代码
#include iostream.h
#include stdio.h
#include string.h
#include ctype.h
#include conio.h
FILE *fp;
char string(char c[]); //字符串处理
char ch;
char *operate[6]={+,-,*,/,++,--};
char *note[4]={//,/*,*/,\};
char *symbol[31]={%,$,^,,_,#,,=,=,,=,,,==,!=,,||,!,
,,;, :=, ., (, ), {, },,||,!,(),};
char *keyword[35]={iostream.h,include,break,case,char,const,continue,default,do,double,
else,enum,cin,float,for,goto,if,int,long,cout,
return,short,signed,sizeof,static,struct,switch,typedef, printf,
union,unsigned,void,volatile,while,main};
int search(char searchstr[],int type) //符号匹配查找
{
int i;
switch (type)
{
case 1:for(i=0;i35;i++)
{
if(strcmp(keyword[i],searchstr)==0)
return 1;
}
case 2:
{
for(i=0;i=5;i++)
{
if(strcmp(operate[i],searchstr)==0)
return 1;
}
break;
}
case 3: for(i=0;i31;i++)
{
if(strcmp(symbol[i],searchstr)==0)
return 1;
}break;
case 4: for(i=0;i=3;i++)
{
if(!strcmp(note[i],searchstr)i==3)
{
string(searchstr);
break;
}
else if(!strcmp(note[i],searchstr))
return 1;
}break;
}
return 0;
}
char letter(char ch)//字母处理
{
int i=-1;
char letter[50];
while (isalnum(ch)||ch==.)
{
letter[++i]=ch;
ch=fgetc(fp);
}
letter[i+1]=\0;
if (search(letter,1))
{
coutletter 关键字endl;
}
else
{
coutletter 标识符endl;
}
return(ch);
}
char number(char ch)//数字处理
{
int i=-1;
char num[20];
while (isdigit(ch)!=0)
{
n
您可能关注的文档
- 2016北京电影学院中国电影教育研究中心考研辅导班笔记精选.doc
- 2016北京电影学院导演系考研辅导班笔记讲义汇总.doc
- 2016江苏专转本冲剌班计算机复习要点核心考点信息技术.doc
- 2015,CMA拯救管理会计人才荒.doc
- 2016福建省中学教师资格面试大纲.docx
- 2016考研数学高数基础阶段复习建议.docx
- 2016深圳家居设计周品质呈现丹麦国宝级设计大师ArneJacobsen.doc
- 2016福建省幼儿园教师资格面试大纲.docx
- 2016年度社会保险缴费基数申报表.doc
- 2016高考真题英语作文满分范文.doc
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
文档评论(0)