南昌大学编译原理实验2

南昌大学编译原理实验2

ID:47917870

大小:52.91 KB

页数:5页

时间:2019-10-29

南昌大学编译原理实验2_第1页
南昌大学编译原理实验2_第2页
南昌大学编译原理实验2_第3页
南昌大学编译原理实验2_第4页
南昌大学编译原理实验2_第5页
资源描述:

《南昌大学编译原理实验2》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验报告学生姓名:学号:专业班级:实验类型:□验证□综合□设计□创新实验日期:实验成绩:一、实验项目名称实验1词法分析程序的设计二、实验目的掌握计算机语言的词法分析程序的开发方法。 三、实验基本原理编制一个能够分析三种整数、标识符、主要运算符和主要关键字的词法分析程序。四、主要仪器设备及耗材PC微机DOS操作系统或Windows操作系统TurboC程序集成环境或VisualC++程序集成环境五、实验步骤1、根据正规式,画出状态转换图;2、根据状态图,设计词法分析算法;3、采用C或C++语言,设计函数scan(),实现该算法;4、编制测试程序(主函

2、数main);5、调试程序:读入文本文件,检查输出结果。六、实验数据及处理结果输入数据:编辑一个文本文件program.txt,在文件中输入如下内容:ifdata+92>0x3fthendata=data+01;elsedata=data-01;正确结果:<0,data><+,-><1,92><>,-><3,3f><0,data><=,><0,data><+,-><2,1><;,-><0,data><=,-><0,data><-,-><2,-><;,->程序:#include#incl

3、ude#include#include#include#include#include#defineNULL0FILE*fp;charch;char*keyword[]={"then","do","else","if","int","while","main"};char*operatornum[]={"+","-","*","/","<","<=","=",">",">=","==",";","(",")","{","}"};boo

4、lsearch(charsearchstr[],intwordtype){inti;switch(wordtype){case1:for(i=0;i<=6;i++){if(strcmp(keyword[i],searchstr)==0)return(true);}case2:{for(i=0;i<=14;i++){if(strcmp(operatornum[i],searchstr)==0)return(true);}break;}break;}return(false);}charletterprocess(charch)//字母处理函数{in

5、ti=-1;charletter[20];while(isalnum(ch)!=0){letter[++i]=ch;ch=fgetc(fp);};letter[i+1]='';if(search(letter,1)){printf("<%s,->",letter);}else{printf("<0,%s>",letter);}return(ch);}charnumberprocess(charch)//数字处理程序{inti=-1,j=-1;charnum[20];charnum1[20];charch1[1];if(ch=='0')

6、{num[++i]=ch;ch=fgetc(fp);if(ch=='x'){num[++i]=ch;ch=fgetc(fp);while(isdigit(ch)!=0

7、

8、(ch>='a'&&ch<='f')){num[++i]=ch;num1[++j]=ch;ch=fgetc(fp);}if(isalpha(ch)!=0){ch1[0]=ch;ch1[1]='';while(isspace(ch)==0&&(search(ch1,2)==0)){num[++i]=ch;ch=fgetc(fp);ch1[0]=ch;}num[i+1]=''

9、;printf("错误!非法标识符:%s",num);gotou;}num1[j+1]='';printf("<3,%s>",num1);}else{while(isdigit(ch)!=0){num[++i]=ch;num1[++j]=ch;ch=fgetc(fp);}if(isalpha(ch)!=0){ch1[0]=ch;ch1[1]='';while(isspace(ch)==0&&(search(ch1,2)==0)){num[++i]=ch;ch=fgetc(fp);ch1[0]=ch;}num[j+1]='';p

10、rintf("错误!非法标识符:%s",num);gotou;}num1[j+1]='';printf("<2,%s>",n

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

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

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