编译原理实验报告-2011.doc

编译原理实验报告-2011.doc

ID:58649890

大小:157.00 KB

页数:21页

时间:2020-10-16

编译原理实验报告-2011.doc_第1页
编译原理实验报告-2011.doc_第2页
编译原理实验报告-2011.doc_第3页
编译原理实验报告-2011.doc_第4页
编译原理实验报告-2011.doc_第5页
资源描述:

《编译原理实验报告-2011.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理实验报告姓名:高亮学号:班级:计算机4班哈尔滨工业大学(威海)计算机科学与技术学院实验一词法扫描器设计一实验目的通过设计调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解;提高词法分析方法的实践能力。二实验内容设计一个简单的类C语言的词法扫描器。三实验要求(一)程序设计要求(1)根据附录给定的文法,从输入的类C语言源程序中,识别出各个具有独立意义的单词,即关键字、标识符、常数、运算符、分隔符五大类;分发见最后附录。(2)提供源程序输入界面;(3)词法分析后可查看符号表和TOKEN串表;(4)保存符号表和T

2、OKEN串表(如:文本文件);(5)遇到错误时可显示提示信息,然后跳过错误部分继续进行分析。(二)实验报告撰写要求(1)系统功能(包括各个子功能模块的功能说明);(2)开发平台(操作系统、设计语言);Windows系统,C语言(3)设计方案;1)主数据流图;源程序Token链符号表词法分析器词法分析器是否为字母存入token链是否为数字存入token链是否为数字1)主要子程序的流程框图(若有必要);2)模块结构图;词法分析填入符号表生成单词序列字符分类读入字符3)主要数据结构:符号表、TOKEN串表等。符号表:char*keyword

3、[8]={"do","begin","else","end","if","then","var","while"};//保留字char*operatornum[4]={"+","-","*","/"};//运算符char*comparison[6]={"<","<=","=",">",">=","<>"};char*interpunction[8]={",",";",":=",".","(",")","[","]"};//界限符(4)。具体设计过程(包括主控程序、各个功能模块的具体实现)。字母处理:charletterprocess(

4、charch)//字母处理函数{inti=-1;charletter[20];while(isalnum(ch)!=0)//isalnum:如果是英文或阿拉伯数字{letter[++i]=ch;ch=fgetc(fp);};letter[i+1]='';if(search(letter,1)){printf("<%s,->",letter);//strcat(letter,"");//fputs('<'letter'>',outp);}else{printf("",letter);/

5、/strcat(letter,"");//fputs(letter,outp);}return(ch);}数字处理:charnumberprocess(charch)//数字处理程序{inti=-1;charnum[20];while(isdigit(ch)!=0){num[++i]=ch;ch=fgetc(fp);}if(isalpha(ch)!=0)//如果是字母即为以数字开始的标识符,这是非法的{while(isspace(ch)==0)//负责读完这个非法标识符{num[++i]=ch;ch=fgetc(fp);}num[

6、i+1]='';printf("错误!非法标识符:%s",num);gotou;}num[i+1]='';printf("",num);//strcat(num,"");//fputs(num,outp);u:return(ch);}主函数:voidmain(){charstr,c;printf("**********************************词法分析器************************************");//outp=fopen("二元式表.txt

7、","w");if((fp=fopen("source.txt","r"))==NULL)printf("源程序无法打开!");else{str=fgetc(fp);while(str!=EOF){if(isalpha(str)!=0)str=letterprocess(str);else{if(isdigit(str)!=0)str=numberprocess(str);elsestr=otherprocess(str);}};printf("词法分析结束,谢谢使用!");printf("点任意键退出!");}c=get

8、ch();}四实验总结能正确进行词法分析,遇到非法字符时能够继续执行五运行结果附录:类C语言的词法文法id®Letterint10®Numint10

9、NumOP®+

10、-

11、*

12、/

13、>

14、<

15、=

16、(

17、)

18、;

19、‘

20、=

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

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

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