C++词法分析器

C++词法分析器

ID:40761365

大小:154.19 KB

页数:11页

时间:2019-08-07

C++词法分析器_第1页
C++词法分析器_第2页
C++词法分析器_第3页
C++词法分析器_第4页
C++词法分析器_第5页
资源描述:

《C++词法分析器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、编译原理—词法分析器实验报告张雅梅(10072510308)一、实验目的:1.设计、编制、调试一个词法分析子程序-识别单词,加深对词法分析原理的理解。2.掌握在对程序设计语言的源程序扫描的过程中,将其分解后各类单词的语法分析方法。二、实验要求:1.对给定的程序通过词法分析器弄够识别一个个单词符号,并以二元式(单词种别码,单词符号的属性值)显示。而本程序则是通过对给定路径的文件的分析后以单词符号和文字提示显示。2.本程序自行规定:(1)关键字"begin","end","if","then","else","while","write","read","do","ca

2、ll","const","char","until","procedure","repeat"(2)运算符:"+","-","*","/","="(3)界符:"{","}","[","]",";",",",".","(",")",":"(4)其他标记如字符串,表示以字母开头的标识符。(5)空格、回车、换行符跳过。在屏幕上显示如下:(1,无符号整数)(begin,关键字)(if,关键字)(+,运算符)(;,界符)(a,普通标识符)三、使用环境:Windowvista下的VisualStudio2008;四、实验步骤1.查询资料,了解词法分析器的工作过程与原理。2.分析

3、题目,整理出基本设计思路。3.实践编码,将设计思想转换用c语言编码实现,编译运行。4.测试功能,多次设置包含不同字符,关键字的待解析文件,仔细察看运行结果,检测该分析器的分析结果是否正确。通过最终的测试发现问题,逐渐完善代码中设置的分析对象与关键字表,拓宽分析范围提高分析能力。五、流程图五、调试程序:1.举例说明文件位置:C:TEST.txt目标程序如下:Intmain()   {i=10;j=100;n=1;sum=0;mult=1;while(i>0){n=n+1;i=i-1;}if(j>=50)thensum=sum+j;else{mult=mult*(j+

4、1);sum=sum+i;}if(i<=10)thensum=sum-i;elsemult=mult+i/2;if(i==j)thensum=sum-j;elsemult=mult-j/2;if(n>1)thenn=n-1;elsen=n+1;if(n<2)thenn=n+2;elsen=n-2;}2.运行结果:  六、程序源代码:#include#includeusingnamespacestd;#defineMAX22charch='';stringkey[15]={"begin","end","if","then","els

5、e","while","write","read","do","call","const","char","until","procedure","repeat"};intIskey(stringc){//关键字判断inti;for(i=0;i='a'))

6、

7、((c<='Z')&&(c>='A')))return1;elsereturn0;}intIsDigit(charc)

8、{//判断是否为数字if(c>='0'&&c<='9')return1;elsereturn0;}voidanalyse(FILE*fpin){stringarr="";while((ch=fgetc(fpin))!=EOF){arr="";if(ch==''

9、

10、ch=='t'

11、

12、ch==''){}elseif(IsLetter(ch)){while(IsLetter(ch)

13、

14、IsDigit(ch)){if((ch<='Z')&&(ch>='A'))ch=ch+32;arr=arr+ch;ch=fgetc(fpin);}fseek(fpin,-1L,SEEK

15、_CUR);if(Iskey(arr)){cout<

16、

17、ch=='.'&&IsDigit(fgetc(fpin))){arr=arr+ch;ch=fgetc(fpin);}fseek(fpin,-1L,SEEK_CUR);cout<

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

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

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