编译原理实验-词法分析器的设计

编译原理实验-词法分析器的设计

ID:21985902

大小:300.42 KB

页数:10页

时间:2018-10-26

编译原理实验-词法分析器的设计_第1页
编译原理实验-词法分析器的设计_第2页
编译原理实验-词法分析器的设计_第3页
编译原理实验-词法分析器的设计_第4页
编译原理实验-词法分析器的设计_第5页
资源描述:

《编译原理实验-词法分析器的设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、集美大学计算机工程学院实验报告课程名称:编译原理班级:指导教师:姓名:实验项目编号:实验一学号:实验项目名称:词法分析器的设计实验成绩.•一、实验目的通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。二、实验内容编写一个词法分析器,从输入的源程序(编写的语言为C语言的一个子集)中,识别出各个具有独立意义的单词,即基木保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续

2、显示)三、实验要求1、词法分析器的功能和输出格式词法分析器的功能是输入源程序,输出单词符号。词法分析器的单词符号常常表示成以下的二元式(单词种别码,单词符号的属性值)。单词示例单词种别码要求保留字if、else、int、while、do每个保留字的单词种别都单独为一种标识符以字母开头且包含字母和数字的字符串标识符作为一种常数(只识别无符号整数)123、343无符号整数作为一种运算符+、-、*、八=、==、!=、〉、<、〉=、<=每符一种,也可以每一类符号一种分隔符,、;、{、}、(、)每符一种2、上述要求仅为棊本要求,可以在此棊础上扩充,例如删除注

3、释,增加识别单词的类型,将标识符和常量分别插入到相应的符号表中,增加错误处理等。3、编程语言不限。四、实验设计方案1、数据字典本实验用到的数据字典如下表所示:单词■示例标识ID保留字void、if、else、for、while、do、return、break、main、int、float、char、double、String1标识符以字母开头且包含字母和数字的字符串2常数(只识别无符号整数)无符号整数和小数3运算符+、-、*、八=、〉、<、4分隔符,、;、{、}、(、)5木实验所使用的开发语言是C语言,在Test2类中定义了以下几个函数:2.程序流

4、程图:读入文件,把A容存入string屮m=0,check=ture,error=false从string屮读出一个字符放入ch屮输出str,标识为标输出str,Y标识为标示符check=tureN71^符check=tureV输出str,标识为输出str,运算符分隔符1N清空str,ch加到str中,check=falseAch加至Ijstr屮清空str,ch加到str中,check=falsech加到str中v打印出错#include#include#include#include

5、dovvs.h>//判断读入的字符是否为字母boolisLetter(charc){if((c>=’a:&&c<=.z’)

6、

7、(c>=W&&c<=,Z,)){returntrue;}elsereturnfalse;}//判断读入的字符是否为数字boolisDigit(charc){if(c>=*0*&&c<=嘗9*){returntrue;}elsereturnfalse;}//判断是否为关键字boolisKey(char*string){if(!strcmp(string,’’void’’)

8、

9、!strcmp(string,’’if’’)

10、

11、!s

12、trcmp(string,’’for")

13、

14、!strcmp(string,’’while’’)

15、

16、!strcmp(string,”do’’)

17、

18、!strcmp(string,’’return’’)

19、

20、!strcmp(string/’break’’)

21、

22、!strcmp(string,’’main")

23、

24、!strcmp(string,"int’’)

25、

26、!strcmp(string,"float")

27、

28、!strcmp(string,"char’’)

29、

30、!strcmp(string,’’double’’)

31、

32、!strcmp(string,"String")

33、)returntrue;}elsereturnfalse;boolisError(charch){if(ch==’@’

34、

35、ch==卞

36、

37、ch==

38、

39、ch==W

40、

41、ch==’〜*

42、

43、ch==:八]{returntrue;}elsereturnfalse;}voidmain()c存放文件中的单个字charstring[500]=””;//存放文件中读出来的字符串charstr[10]="";//存放需要对比的字符串charch,c;//ch存放文件中的单个字符(翻译时用》符(从文件中提取信息时用〉charfilename[20];//文件名intj=0

44、;printf(”请输入文件名进行词法翻译:”);scanf(”%sn,filename);FILE*cfPtr;if((

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

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

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