实验安排+词法分析程序设计与实现

实验安排+词法分析程序设计与实现

ID:13991053

大小:80.50 KB

页数:14页

时间:2018-07-25

实验安排+词法分析程序设计与实现_第1页
实验安排+词法分析程序设计与实现_第2页
实验安排+词法分析程序设计与实现_第3页
实验安排+词法分析程序设计与实现_第4页
实验安排+词法分析程序设计与实现_第5页
资源描述:

《实验安排+词法分析程序设计与实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验一词法分析程序设计与实现一、实验目的:加深对词法分析器的工作过程的理解;加强对词法分析方法的掌握;能够采用一种编程语言实现简单的词法分析程序;能够使用自己编写的分析程序对简单的程序段进行词法分析。二、实验内容:自定义一种程序设计语言,或者选择已有的一种高级语言(C语言),编制它的词法分析程序。词法分析程序的实现可以采用任何一种编程工具。三、实验要求:1.对单词的构词规则有明确的定义;2.编写的分析程序能够正确识别源程序中的单词符号;3.识别出的单词以<种别码,值>的形式保存在符号表中;4.词法分析中源程序的输入以.c格式,分析后的符

2、号表保存在.txt文件中。5.*对于源程序中的词法错误,能够做出简单的错误处理,给出简单的错误提示,保证顺利完成整个源程序的词法分析;6.实验报告要求用自动机或者文法的形式对词法定义做出详细说明,说明词法分析程序的工作过程,说明错误处理的实现*。四、实验学时:6学时五、实验步骤:1.定义目标语言的可用符号表和构词规则;2.依次读入源程序符号,对源程序进行单词切分和识别,直到源程序结束;3.对正确的单词,按照它的种别以<种别码,值>的形式保存在符号表中;4.*对不正确的单词,做出错误处理*。六、选作实验学生可以根据自身的情况完善词法分析程

3、序的错误处理功能(实验要求5&6),如对错误的单词给出准确的位置和错误类型提示。七、作业提交时间第8周实验课结束后提交词法分析程序(zzwyanqiu@163.com)。八、提示1.charScanin[100],Scanout[100];//用于接收输入输出文件名FILE*fin,*fout;//用于指向输入输出文件的指针2.//下面定义保留,为简化程序,使用字符指针数组保存所有保留字。//如果想增加保留字,可继续添加,并修改保留字数目#definekeywordSum8char*keyword[keywordSum]={"if","

4、else","for","while","do","int","read","write"};3.//下面定义纯单分界符,如需要可添加charsingleword[50]="+-*(){};,:";4.//下面定义双分界符的首字符chardoubleword[10]="><=!";5.scanf("%s",Scanin);printf("请输入词法分析输出文件名(包括路径):");scanf("%s",Scanout);6.if((fin=fopen(Scanin,"r"))==NULL)//判断输入文件名是否正确{printf("

5、打开词法分析输入文件出错!");return(1);//输入文件出错返回错误代码1}if((fout=fopen(Scanout,"w"))==NULL)//判断输出文件名是否正确{printf("创建词法分析输出文件出错!");return(2);//输出文件出错返回错误代码2}7.ch=getc(fin);//读取文件里的一个字符8.isalpha(ch)//字母判断函数isalnum(ch))//数字判断函数strcmp(token,keyword[n])//串比较fprintf(fout,"%st%s","ID

6、",token);//输出标识符符号到fout指定的文件strchr(singleword,ch)//声明:char*strchr(constchar*string,intc);//在字符串string中搜索字符c,若成功则返回一个指向该字符第一次出现的位置,否则返回NULL//这个例子中的变量x的值为5:charstring[]="hello";char*p;intx;p=strchr(string,'o');x=p-string+1;http://vip.6to23.com/tenax/clib/clib.html//c库函数查找地

7、址任务1:识别小型语言所有单词的词法分析程序设计源程序设计语言G[<程序>]<程序>→<变量说明><语句表>.<变量说明>→VAR<变量表>:<类型>;

8、<空><变量表>→<变量表>,<变量>

9、<变量><类型>→INTEGER<语句表>→<语句>

10、<语句>;<语句表><语句>→<赋值语句>

11、<条件语句>

12、

13、<复合语句><赋值语句>→<变量>:=<算术表达式><条件语句>→IF<关系表达式>THEN<语句>ELSE<语句>→WHILE<关系表达式>DO<语句><复合语句>→BEG

14、IN<语句表>END<算术表达式>→<项>

15、<算术表达式>+<项>

16、<算术表达式>-<项><项>→<因式>

17、<项>*<因式>

18、<项>/<因式><因式>→<变量>

19、<整数>

20、(<算术表达式>)<关系表达式>→

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

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

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