ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:87.79KB ,
资源ID:20353011      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20353011.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译原理词法分析实验一词法分析扫描器的设计实现本科论文Word格式文档下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编译原理词法分析实验一词法分析扫描器的设计实现本科论文Word格式文档下载.docx

1、iostream#include stdlib.husing namespace std;/*定义结构体*/typedef struct Token char name20; int state; /状态,为0是标识符,为1是字符,为2是字符串,为3是数字,为4是关键字,为5是界符 Token;typedef struct STR / int code;STR;STR iT10;STR cT20;STR sT20;STR CT20;STR KT10=int,4,main,5,void,6,if,7,else,8,char,9;STR PT30=,10,11,=,12,13,14,15,+,16

2、,-,17,*,18,/,19, ,20,21,22,;,23,(,24,),25,26,27;/*全局变量声明*/Token CurrentToken; /正在读的tokenToken token200;FILE *fp; /源文件指针char ch; /读取字符int state=0;/0表示标识符,1表示字符,2表示字符串int iT_i=0;/iT结构体数组下标int cT_i=0;int sT_i=0;int CT_i=0;int index=0;/token的下标/*函数声明*/ /读的是字母,关键字和标示符/,;+-/*主函数*/int main() int i =0; if(f

3、p=fopen(source.txtr)=NULL) coutcan not open the source file!nendl; exit(1); ch=fgetc(fp); /文件中读一个字符 while(ch!=#) for(i=0; i0)&(chaz)|(chAZ)|(ch=_) /关键字和标识符 IsAlpha(); else if(ch= |ch=n else IsOther(); i=index;i+) couttokeni.name) CurrentToken.namek+=ch;/将数字放入单词缓冲区 bool flag=1; if(ch=. if(ch flag=0;

4、if(flag=1) strcpy(CTCT_i+.name,CurrentToken.name); strcpy(tokenindex.name,CurrentToken.name ); tokenindex+.state=3; /coutCurrentToken.name error/*是否为关键字*/void IsAlpha() int i=0; if(state=0) bool flag=0;)|ch=)/将完整的单词放入单词缓冲区 CurrentToken.namei+=ch; /判断是否是关键字7; if(strcmp(CurrentToken.name,KTi.name)=0)

5、flag=1; /printf(%s ,CurrentToken.name,KTi.code); strcpy(tokenindex.name,CurrentToken.name); tokenindex+.state =4; printf(,KTi.code); break; if(flag!=1)|(ch00,CurrentToken.name);); strcpy(tokenindex.name,CurrentToken.name); tokenindex+.state =0; int tag=0; for(int j=0;jiT_i;j+) if(strcmp(CurrentToken

6、.name,iTj.name)=0) tag=1; break; if(tag=0) strcpy(iTiT_i.name,CurrentToken.name); iTiT_i+.code=0;/*其它 */int IsOther() int i; /将缓冲区初始化 switch(ch) case: CurrentToken.name0= if(ch = CurrentToken.name1=+-*/,() case ch strcpy(tokenindex.name,CurrentToken.name); tokenindex+.state =1; int tag=0; for(int j=

7、0;=cT_i; if(strcmp(cTcT_i.name ,CurrentToken.name )=0) tag=1; if(tag=0) strcpy(cTcT_i+.name,CurrentToken.name);error1error2 int j=1; while(ch CurrentToken.namej+=ch; CurrentToken.namej+=02=sT_i; if(strcmp(sTsT_i.name ,CurrentToken.name )=0) tag=1; if(tag=0) strcpy(sTsT_i+.name,CurrentToken.name);err

8、or3 if(CurrentToken.name0! if(strcmp(CurrentToken.name,PTi.name)=0)%d,CurrentToken.name,PTi.code);,PTi.code); strcpy(tokenindex.name ,CurrentToken.name ); tokenindex+.state =PTi.code; /while(ch=) ch=fgetc(fp);程序运行结果:(截屏)输入:Source.txt文本int main (void) int a=1, d=2,c; if(a=d) c=a; a=d; d=c;char ch10=okchar x,y=c=a+d;#输出:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1