词法分析报告附代码devc

词法分析报告附代码devc

ID:27819447

大小:404.33 KB

页数:16页

时间:2018-12-06

词法分析报告附代码devc_第1页
词法分析报告附代码devc_第2页
词法分析报告附代码devc_第3页
词法分析报告附代码devc_第4页
词法分析报告附代码devc_第5页
资源描述:

《词法分析报告附代码devc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、屮北大学软件学院实验报告专业课程名称学号屮北大学软件学院实验报告专业课程名称学号辅导教师成绩实验日期实验时间1实验名称:词法分析器的设计与实现2、实验目的(1)掌握C语言单词符号的划分、正规式、状态转换图及词法分析器的实现。(2)掌握词法分析程序的作用。3、实验要求(1)对任给的一个C语言源程序,能够滤掉空格、回车换行符、tab键及注释。(2)识别各类单词符号,如关键字、标识符、运算符、常数、界符,结果以二元式形式输出,并构造符号表。(3)输出有词法错谋的单词及所在行号。(在此阶段只能识别有限的词法错谋)4、实验原理根据扫描到的单词符号的第一个字符的种类,分别转到相应

2、的程序进行处理。这些程序的功能就是识别以相应字符开头的各类单词符号。5、实验步骤(1)根据C语言各类单词的正规式,构造能识别各类单词的状态转换图。(2)根据状态转换图,构造识别各类单词的词法分析器。6、状态转换图及词法分析程序(1)标识符(1D)和整型常数(NUM)的正规式如下:ID=

3、letter(letter

4、digit)*NUM=digitdigit*其中标识符的状态转换图为:为(ch~'))其词法分析程序if(((ch>=A')&&(ch"'Z'))((ch>=『)&&(ch<=z'))/*以字母开头*/while(((ch>=,A*)&&(ch〈二'Z'))

5、

6、

7、((ch>二'a')&&(ch〈二'z'))

8、

9、(ch==,_,)

10、

11、((ch>=,0')&&(chU'9'))){array[i++]=ch;ch=fgetc(fpin);}word=(char*)malloc((i+1)*sizcof(char));memcpy(word,array,i);word[i]二'';isidkey(word);if(ch!=EOF)fseek(fpin,-IL,SEEK_CUR);)常数的状态转换图为:其词法分析程序为:elseif(ch>二'O'&&ch〈二'9'){/*以数字开头*/whi1e(ch>二'0,&&ch〈二'

12、9')array[i++]=ch;ch二fgetc(fpin);word=(charmal1oc((i+1)izeof(char));is_number(word,array,i);word[i]二'';csmanage(word);if(ch!=EOF)fseek(fpin,-lL,SEEK_CUR);流程图输团対战的広即杆帕的字味足舌为士?计龙frS敎学检出它見&印R7、测试及结果ca*C:DOCU1EITSAIDSETTIlGSABIIIISTRAT0R^fiqq4qqq4Debugqqq«qq

13、ut,txt-记爭本-Jn

14、x

15、文件d)編辑g)格式(Q)查看世)帮肋Qi)nincludemain()#includc#include#includevoidinit();intscan();/////////////////////////////////////////////////////A判断是否关键字结束)voidis_nuinber(char*p){HLE*fp;fp=fopen(Hconstant.txt"

16、,"a");fprintf(fp,”%s”,p);fclose(fp);fp=fopen("output.txt',,,,a,');fprintf(fp,"%sH,p);fclose(fp);}/////////////////////////////////////////////////////判断是否为常虽intis_limit(char*ch){inti;for(i=0;i<41;i++){if(ch==limit[i])return1;return-1;voidis_error(charerror,intlineno){printf("error

17、:%c,line%d',,error,lineno);///////////////////////////////////////////////////////报告出错符号和所在行数"enum",char*Key[]={"auto","break","case*',"char","const","continue","default",“do”,“double",“else",“extern",“float”,”for“,“goto",Hif"long","printf',"register","return","short","signed"

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

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

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