《编译技术》实验报告词法分析程序

《编译技术》实验报告词法分析程序

ID:30122591

大小:281.68 KB

页数:16页

时间:2018-12-27

《编译技术》实验报告词法分析程序_第1页
《编译技术》实验报告词法分析程序_第2页
《编译技术》实验报告词法分析程序_第3页
《编译技术》实验报告词法分析程序_第4页
《编译技术》实验报告词法分析程序_第5页
资源描述:

《《编译技术》实验报告词法分析程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、软件工程0801班和春辰U200818016《编译技术》实验1《编译技术》实验报告实验名称:词法分析程序姓名:和春辰学号:U200818016班级:软件工程0801班指导老师:胡福林2010年10月21日16/16软件工程0801班和春辰U200818016《编译技术》实验1目录一、实验题目3二、实验目的3三、实验要求4四、实验步骤4基本设计思路4流程框图5算法设计6函数相关说明6输入与输出8程序运行结果9五、实验方案设计实现9六、实验程序亮点描述10七、实验程序使用说明10八、实验心得体会10九、源程序清单1016/16软件工程

2、0801班和春辰U200818016《编译技术》实验1一、实验题目设计、编制、调试一个识别一简单语言单词的词法分析程序。程序能够识别基本字、标识符、无符号整数、浮点数、运算符和界符)。单词符号及种别表如下:单词符号种别编码begin1if2then3while4do5end6l(l

3、d)*10dd*11+13-14*15/16:17:=18<20<>21<=22>23>=24=25;26(27)28#0二、实验目的设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。16/16软件工程0801班和春辰U200818016《编

4、译技术》实验1一、实验要求词法分析程序需具备词法分析的功能:输入:所给文法的源程序字符串。(字符串以“#”号结束)输出:二元组(syn,token或sum)构成的序列。其中:syn为单词种别码;token为存放的单词自身字符串;sum为整型常数。例如:对源程序beginx:=9:ifx>9thenx:=2*x+1/3;end#的源文件,经过词法分析后输出如下序列:(1,begin)(10,x)(18,:=)(11,9)(26,;)(2,if)……二、实验步骤基本设计思路Ø基本字作为一类特殊的标识符来处理:识别出标识符,差基本字表,

5、给出相应种别码。基本字表置初值:char*rwtab[6]={"begin","if","then","while","do","end"};(字符指针的数组)Ø识别无符号整数是将数字串转换为无符号整数。我们在getchar()的时候是把数字当做字符从外部输出读取的。将数字串345#转换为整数:(3*10+4)*10+5=345送到sum中Ø程序主要由2个函数组成,主函数main()和扫描子函数scanner()。扫描程序每次读取1个独立意义的单词符号,并判断单词类型。主程序做相应处理后做控制台输出。16/16软件工程0801班和

6、春辰U200818016《编译技术》实验1流程框图图1主程序图2扫描子程序16/16软件工程0801班和春辰U200818016《编译技术》实验1算法设计词法分析程序所用的较为重要的全局变量和需调用的函数如下:1)ch字符变量,存放当前读进的源程序字符。2)token[8]字符数组,存放构成单词符号的字符串。3)prog[80]字符数组,存放所有用户输入的字符。4)syn整数,存放当前单词的种别码。5)sum双精度浮点型变量,存放无符号整数,或者浮点数。6)isDecimal整数,是否为浮点数。isDecimal为1,则为浮点数。

7、7)decimal双精度浮点型变量(double),浮点数的小数部分。8)isExp整数,是否为指数形式表示的浮点数(即是否存在符号E或者e)。isExp为1,则为指数形式。9)index整数,指数形式的幂。10)isNegative整数,是否为负数幂。isNegative为1,则为负数幂,如123E-2。11)scanner()扫描子程序。12)getchar()从控制台读取一个字符数据。13)doublepow(doublex,doubley),计算x的y次幂。14)intstrcmp(char*str1,char#str2)

8、,字符串比较。函数相关说明1.接收用户输入:getchar()和do…while循环的组合do{ch=getchar();prog[p++]=ch;}while(ch!='#');//输入以#号键结束2.输出到控制台:do…while循环中,扫描出单词后(扫描程序还会判断种别码syn)输出。do{scanner();//扫描,单词switch(syn){case11:if(isDecimal==0){printf("(%2d,%8d)",syn,(int)sum);break;}elseif(isExp==1){printf(

9、"(%2d,%10.5e)",syn,sum);isExp=0;16/16软件工程0801班和春辰U200818016《编译技术》实验1isDecimal=0;break;}elseif(isDecimal==1){printf("(%2d,%

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

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

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