编译原理课程设计词法分析.doc
《编译原理课程设计词法分析.doc》由会员分享,可在线阅读,更多相关《编译原理课程设计词法分析.doc(17页珍藏版)》请在三一办公上搜索。
1、目录一、实验题目3二、实验目的3三、实验要求4四、实验步骤4基本设计思路4流程框图5算法设计6函数相关说明6输入与输出8程序运行结果9五、实验方案设计实现9六、实验程序亮点描述10七、实验程序使用说明10八、实验心得体会10九、源程序清单10一、 实验题目设计、编制、调试一个识别一简单语言单词的词法分析程序。程序能够识别基本字、标识符、无符号整数、浮点数、运算符和界符)。单词符号及种别表如下:单词符号种别编码begin1if2then3while4do5end6l(l|d)*10dd*11+13-14*15/16:17:=18202123=24=25;26(27)28#0二、 实验目的设计、编
2、制并调试一个词法分析程序,加深对词法分析原理的理解。三、 实验要求词法分析程序需具备词法分析的功能:输入:所给文法的源程序字符串。(字符串以“#”号结束)输出:二元组(syn,token或sum)构成的序列。其中:syn为单词种别码; token为存放的单词自身字符串; sum为整型常数。例如:对源程序begin x:=9: if x9 then x:=2*x+1/3; end #的源文件,经过词法分析后输出如下序列:(1,begin)(10,x)(18,:=)(11,9)(26,;)(2,if)四、 实验步骤基本设计思路 基本字作为一类特殊的标识符来处理:识别出标识符,差基本字表,给出相应种
3、别码。基本字表置初值:char *rwtab6=begin,if,then,while,do,end;(字符指针的数组) 识别无符号整数是将数字串转换为无符号整数。我们在getchar()的时候是把数字当做字符从外部输出读取的。将数字串345#转换为整数:(3*10+4)*10+5=345送到sum中 程序主要由2个函数组成,主函数main()和扫描子函数scanner()。扫描程序每次读取1个独立意义的单词符号,并判断单词类型。主程序做相应处理后做控制台输出。流程框图图 1主程序图 2扫描子程序算法设计词法分析程序所用的较为重要的全局变量和需调用的函数如下:1) ch字符变量,存放当前读进的
4、源程序字符。2) token8字符数组,存放构成单词符号的字符串。3) prog80字符数组,存放所有用户输入的字符。4) syn整数,存放当前单词的种别码。5) sum双精度浮点型变量,存放无符号整数,或者浮点数。6) isDecimal整数,是否为浮点数。isDecimal为1,则为浮点数。7) decimal双精度浮点型变量(double),浮点数的小数部分。8) isExp整数,是否为指数形式表示的浮点数(即是否存在符号E或者e)。isExp为1,则为指数形式。9) index整数,指数形式的幂。10) isNegative整数,是否为负数幂。isNegative为1,则为负数幂,如1
5、23E-2。11) scanner()扫描子程序。12) getchar()从控制台读取一个字符数据。13) double pow(double x,double y),计算x的y次幂。14) int strcmp(char *str1,char #str2),字符串比较。函数相关说明1. 接收用户输入:getchar()和dowhile循环的组合doch=getchar();progp+=ch;while(ch!=#); /输入以号键结束2. 输出到控制台:dowhile循环中,扫描出单词后(扫描程序还会判断种别码syn)输出。doscanner(); /扫描,单词switch(syn)ca
6、se 11:if(isDecimal=0)printf(%2d,%8d)n,syn,(int)sum);break;else if(isExp=1)printf(%2d,%10.5e)n,syn,sum);isExp=0;isDecimal=0;break;else if(isDecimal=1)printf(%2d,%8.4f)n,syn,sum);isDecimal=0;break;case -1:printf(input errorn);break;default:printf(%2d,%8s)n,syn,token);while(syn!=0);3. 浮点数的识别,先识别数字,再识别
7、. ,再识别数字,再识别E或e,再识别 - ,再识别数字。elseif(ch=0)&(ch=0)&(ch=0)&(ch=0)&(ch=9)/指数index=index*10+ch-0;ch=progp+;if(isNegative)sum=sum*pow(0.1,index);elsesum=sum*pow(10,index);p-;syn=11;输入与输出词法分析程序需具备词法分析的功能:输入:所给文法的源程序字符串。(字符串以“#”号结束)输出:二元组(syn,token或sum)构成的序列。其中:syn为单词种别码; token为存放的单词自身字符串; sum为整型常数。程序运行结果五、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 课程设计 词法 分析
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-4296310.html