首页 C语言词法分析器构造实验报告

C语言词法分析器构造实验报告

举报
开通vip

C语言词法分析器构造实验报告C语言词法分析器构造实验报告 词法分析器构造实验报告 学院: 计算机学院 班级: 计科七班 姓名: 曾楠 学号: 2010301500222 一、题目要求: 完成一个C语言的词法分析器的构造。此词法分析器能识别附值语句、循环语句、条件语句、并 能处理注释。 二、设计方案: 这个词法分析器分析的主要关键字有:main, int, float, char, if, else, for, while, do, switch, case, break; default。选择要分析的c文件,首先对其去掉注...

C语言词法分析器构造实验报告
C语言词法分析器构造实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 词法分析器构造实验报告 学院: 计算机学院 班级: 计科七班 姓名: 曾楠 学号: 2010301500222 一、题目要求: 完成一个C语言的词法分析器的构造。此词法分析器能识别附值语句、循环语句、条件语句、并 能处理注释。 二、 设计方案 关于薪酬设计方案通用技术作品设计方案停车场设计方案多媒体教室设计方案农贸市场设计方案 : 这个词法分析器分析的主要关键字有:main, int, float, char, if, else, for, while, do, switch, case, break; default。选择要分析的c文件,首先对其去掉注释和与空格处理,再根据字符的不同类型分析。 1、全局数据结构: 字符数组 set[ ]:存放从文件中读到的所有字符; str[ ]:存放经过注释处理和预空格处理的字符; strtoken[ ]:存放当前分析的字符; 结构体 KEYTABLE:存放关键字及其标号; 全局字符变量 ch:当前读入字符; 全局整型变量 sr, to:数组str, strtoken 的指针。 2、以层次图形式描述模块的组成及调用关系 Main ( ) Analysis ( ) Set32() Openfile ( ) Reflesh() Concat() GetBC() GetChar() Process() Reserve() IsDigit() GetChar() IsLetter() Retract() 3、主要函数的设计要求(功能、参数、返回值): openfile:打开文件; GetChar:将下一个输入字符读到ch中,搜索指示器前移一字符位置; GetBC:检查ch中的字符是否为空白。若是,则调用GetChar直至ch中进入一个非空白字符; Concat:将ch中的字符连接到strtoken之后; IsLetter 和IsDigit:布尔函数过程,分别判断ch中的字符是否为字母和数字; Reserve:整型函数过程,对strtoken中的字符串查找关键字表,若是关键字则返回编码,否则返回-1; Retract:将搜索指示器回调一个字符位置,将ch置为空白字符; reflesh:刷新,把strtoken数组置为空; prearrange1:将注释部分置为空格; prearrange2:预处理空格,去掉多余空格; analysis:词法分析; main:主函数。 4、状态转换图: 1 6 字母或数字 字母 非字母或数字 数字 数字 2 7 0 非数字 字符a 3 8 字符a 字符b 4 9 ‘ = ’ 字符c 5 字符a包括:= , & , | , + , -- 字符b包括:-- , < , > , | , * 字符c包括:, , : , ( , ) , { , } , [ , ] , ! ,# , % , ” , / , * , + , -- , > , <, . 三、源代码如下: #include #include #include #include using namespace std; char ch; //关键字表 string keyword[50]={"bool","break","case","include","char","const", "continue", "default", "do","double","else","false", "float","for","if","int","long", "namespace","new","return", "short","signed","struct","switch","true","using","void","while" ,"then"}; int gjz(string c){ int i; for(i=0;i<50;i++) { if(keyword[i].compare(c)==0) return 1; } return 0; } int zm(char c){ if(((c<='z')&&(c>='a')&&(c<='Z')&&(c>='z'))) return 1; else return 0; } int number(char c){ if(c>='0'&&c<='9') return 1; else return 0; } void caculate(FILE *fpin){ ofstream out("mytest.txt",ios::out); string arr=""; while ((ch=fgetc(fpin))!=EOF){ arr=""; if(ch==' '||ch=='\t'||ch=='\n'){} else if(zm(ch)){ while(zm(ch)||number(ch)){ arr=arr+ch; ch=fgetc(fpin); } fseek(fpin,-1L,SEEK_CUR); if(gjz(arr)){out<='a'))||((ch<='Z')&&(ch>='A'))){fseek(fpin,-1L,SEEK_CUR); out<<"<"<<" \t5"<<"\t 界限符"<')out<<"<>"<<" \t4"<<"\t运算符"<':{ch=fgetc(fpin); if(ch=='=')out<<">="<<" \t4"<<"\t 运算符"<')out<<">>"<<" \t7"<<"\t控制符"<"<<" \t5"<<"\t 界限符"<')out<<"<>"<<" \t4"<<"\t运算符"<"<<" \t4"<<"\t运算符"<>x;cout<>x; cout.width(20); cout<>x; cout.width(20); cout<>in_fn; if((fpin=fopen(in_fn,"r"))!=NULL)break; else cout<<"源文件名错误,请再次输入:"; } cout<<"\n****************词法分析如下********************"< 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf : 这个程序主要参考书上关于词法分析器的设计。在设计过程中仍有遇到很多困难,但经请教同学后,好多问题都并不是想象中的困难。尽管如此,分析考虑还不全面,例如没有创建符号表和常数表。这些情况将在在语法和语义分析时进行完善。
本文档为【C语言词法分析器构造实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_842972
暂无简介~
格式:doc
大小:49KB
软件:Word
页数:10
分类:互联网
上传时间:2017-09-26
浏览量:77