C源代码单词扫描程序.doc

C源代码单词扫描程序.doc

ID:50364896

大小:73.00 KB

页数:7页

时间:2020-03-08

C源代码单词扫描程序.doc_第1页
C源代码单词扫描程序.doc_第2页
C源代码单词扫描程序.doc_第3页
C源代码单词扫描程序.doc_第4页
C源代码单词扫描程序.doc_第5页
资源描述:

《C源代码单词扫描程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、院系:计算机学院实验课程:编译原理实验实验项目:C++源代码单词扫描程序(词法分析)指导老师:黄煜廉一.实验项目C++源代码单词扫描程序(词法分析)二.实验要求1.C++源代码扫描程序识别C++记号。C++语言包含了几种类型的记号:标识符,关键字,数(包括整数、浮点数),字符串、注释、特殊符号(分界符)和运算符号等。2.打开一个C++源文件,打印出所有以上的记号。3.要求应用程序应为Windows界面。4.选作部分:为了提高C++源程序的可读性,C++程序在书写过程中加入了空行、空格、缩进、注释等。假设你想牺牲可读性,以节省磁盘空间,那么你可以存贮一个删除了所有不必要空格

2、和注释的C++源程序的压缩文本。因此,程序中还应该有这样的压缩功能。1.选作部分:进一步思考或实现——如何进一步实现减小源文件大小的压缩功能。2.应该书写完善的软件文档。三.需求分析1.根据所需的功能程序应分为分析关键字、分析标识符、分析数字、分析串、分析注释、分析特殊字符和过滤多余字符几部分。2.关键字有iostream.h.main.while.gotoincludeforbreakcaseifstructclass等。3.过滤字符要考虑到空格和换行。四.实验代码五.#include六.#include七.#include

3、tring.h>八.#include九.#include十.FILE*fp;十一.charstring(charc[]);//字符串处理十二.charch;十三.char*operate[6]={"+","-","*","/","++","--"};十四.char*note[4]={"//","/*","*/","""};十五.char*symbol[31]={"%","$","^","&","_","#","<","<=","=",">",">=","<>","<<","==","!=","&&","

4、

5、","!",十六.",","

6、;",":=",".","(",")","{","}","&&","

7、

8、","!","()",">>"};十七.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","s

9、witch","typedef","printf",二十."union","unsigned","void","volatile","while","main"};二十一.二十二.intsearch(charsearchstr[],inttype)//符号匹配查找二十三.{二十四.inti;二十五.switch(type)二十六.{二十七.case1:for(i=0;i<35;i++)二十八.{二十九.if(strcmp(keyword[i],searchstr)==0)三十.return1;三十一.三十二.}三十三.case2:三.{四.for(i=0;i<=5;i++

10、)五.{六.if(strcmp(operate[i],searchstr)==0)七.return1;八.}九.break;十.}十一.case3:for(i=0;i<31;i++)十二.{十三.if(strcmp(symbol[i],searchstr)==0)十四.return1;十五.}break;十六.case4:for(i=0;i<=3;i++)十七.{十八.十九.if(!strcmp(note[i],searchstr)&&i==3)二十.{二十一.string(searchstr);二十二.break;二十三.}二十四.elseif(!strcmp(note

11、[i],searchstr))二十五.return1;二十六.二十七.}break;二十八.}二十九.return0;三十.}三十一.三十二.charletter(charch)//字母处理三十三.{三十四.inti=-1;三十五.charletter[50];三十六.while(isalnum(ch)

12、

13、ch=='.')三十七.{三十八.letter[++i]=ch;三十九.ch=fgetc(fp);四十.}四十一.letter[i+1]='';四十二.if(search(letter,1))四十三.{四十四.cout<

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

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

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