




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译原理词法分析实验报告软工082班兰洁200831104044一、 实验内容二、 实验目的三、 实验预期四、 程序规定五、 实验原理l 程序流程图l 判别浮点功能扩展流程图l 状态转换图六、 程序代码与浮点判别功能扩展七、 测试用例l 扩展功能测试用例;l 普通功能测试用例八、 输出结果九、 实验心得一、实验内容:词法分析:1、 识别简单语言的单词符号;2、 识别关键字、标识符、数字、运算符等。并扩展浮点识别功能。二、实验目的 调试词法分析程序,加深对词法分析原理的理解,掌握编写简单词法分析程序的一般步骤。三、实验预期结果:经过调试源代码程序,程序能够成功运行编译,对输入的简单字符串,能够别关键字、标识符、数字、运算符等,并且给出单词符号的对应编码。四、程序规定:1、关键字:function,if,then,while,do,endfunc;2、算术运算符:”+”,”-”,”*”,”/”,”=”;3、关系运算符: = = !=;4、界符:( ) ; #;5、标识符规定以字母开头,字母均为小写;6、空格和换行符跳过;7、单词对应编码:单词符号对应编码单词符号对应编码单词符号对应编码function123=25if220!=29then3+13;26while4-14(27do5*15)28endfunc6/1621标识符10=24其他-1数字11=22浮点数80#0=18十、 实验原理:输入串-词法分析程序单词符号串输入:字符串以#结束。输出:单词的二元组(syn,token/sum) 程序流程图分析浮点数功能扩展部分流程图: shuzi()函数状态转换图六、程序代码:备注:红色字体部分为程序功能的功能扩展,使程序能够分析浮点数!我把浮点数的syn设置为80!/*词法分析源代码*/#include#includescaner();char prog80,token8;char ch;int syn,p,m,n,sum;char * rwtab6=function,if,then,while,do,endfunc;int i=0,k,c,sumint,f;char fenshu80,sum180;double sumf=0,fudian;int shuzi() if(ch=0 & ch=9) syn=80; else syn=-2; return syn;main()p=0;printf(n please input string :n);doscanf(%c,&ch);prog+p=ch; while(ch!=#); p=0; do scaner(); switch(syn) case 11:printf(n(%d,%d),syn,sum);break; case -1:printf(n error);break; case 80:printf(n(%d,%f),syn,fudian);break; default:printf(n(%d,%s),syn,token); while(syn!=0); scaner() for(n=0;n=a & ch=a & ch=0 & ch=9) tokenm+=ch;/token0=f,m=1 ch=prog+p; tokenm=0; ch=prog-p; syn=10; for(n=0;n=0 & ch=9) c=p; k=0; do sum1k=ch; ch=prog+c; /ch取后一个数字 k+; shuzi();/这个函数用来分析浮点数的整数部分是否已经输入到数组里 f=syn; while(f=80)if(ch=.) for(n=0;n=0;k-) sumf=sumf*0.1+(fenshuk-0)*0.1; /计算浮点数的小数部分 fudian=sumint+sumf; /浮点数计算 syn=80; p=-c; else ch=progp;/若是整数,ch等于原来的值 sum=0; while(ch=0 & ch=9) sum=sum*10+ch-0; ch=prog+p; ch=prog-p;syn=11; else switch(ch) case) syn=21; tokenm+=ch; else syn=20;ch=prog-p; break; case:m=0; tokenm+=ch; ch=prog+p; if(ch=) syn=24; tokenm+=ch; else syn=23; ch=prog-p; break; case=:m=0; tokenm+=ch; ch=prog+p; if(ch=) syn=25; tokenm+=ch; else syn=18; ch=prog-p; break; case!:m=0;tokenm+=ch; ch=prog+p; if(ch=) syn=22; tokenm+=ch; else syn=-1; p-; break; case+:syn=13;token0=ch;break; case-:syn=14;token0=ch;break; case*:syn=15;token0=ch;break; case/:syn=16;token0=ch;break; case;:syn=26;token0=ch;break; case(:syn=27;token0=ch;break; case):syn=28;token0=ch;break; case#:syn=0;token0=ch;break; default:syn=-1; 七、测试用例:测试用例1输出结果测试用例2输出结果测试用例3输出结果1+1=2;#(11,1)(13,+)(11,1)(18,=)(11,2)(26,;) (0,#)a*b=c;c=1+s2b;#(10,a)(15,*)(10,b)(18,=)(10,c)(26,;)(10,c)(18,=)(11,1)(13,+)(10,s2b)(26,;)(0,#)functionwhile(a=1)if(sb=2)2=s2b;endfunc#(1,function)(4,while)(27,()(10,a)(18,=)(11,1)(28,)(2,if)(27,()(10,sb)(24,=)(11,2)(28,)(11,2)(18,=)(10,s2b)(26,;)(6,endfunc)(0,#)测试用例4输出结果!$%&_|#error error error error error error error error error(0,#)补充:功能扩展测试用例:输入数据1显示结果输入数据显示结果输入数据显示结果a+b=1.1;a=2.3#(10,a)(13,+)(10,b)(18,=)(80,1.100000)(26,;)(10,a)(18,=)(80,2.300000)(0,#)a=1+2.2b=3.2;1+2.3=3.3#(10,a)(18,=)(11,1)(13,+)(80,2.200000)(10,b)(18,=)(80,3.200000)(26,;)(11,1)(13,+)(80,2.300000)(18,=)(80,3.300000)(0,#)a=1*2.3;2*12.2=24.4#(10,a)(18,=)(11,1)(15,*)(80,2.300000)(26,;)(11,2)(15,*)(80,12.200000)(18,=)(80,24.400000)(0,#)八、程序输出结果:功能扩展测试用例输出结果用例一:用例二:用例三:普通功能测试用例显示结果九、实验心得通过编译原理实验一词法分析实验,使得自己对词法分析的流程有了更深刻的了解,虽然源代码并非由自己设计,但是在调试程序的过程中,尤其是进行测序功能扩展的过程中,想了很多种办法,终于找到了最合适的方法,而且还进行了代码的优化,这
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山石盆景工综合考核试卷及答案
- 安阳电影新媒体营销方案
- 营销活动加油卡权益方案
- 贵州苗绣营销策划方案
- 2025版司法局《撤销劳动仲裁裁决申请书》民事类法律文书(空白模板)
- 专业建筑机电安装方案设计
- 语音交换系统施工方案
- 女性情感咨询方案
- 痔围手术期护理
- 咨询公司薪资造价方案
- 读书分享会红色书籍《保卫延安》课件
- 华能集团薪酬管理制度
- T/CIE 147-2022空间行波管加速寿命试验评估技术规范
- 系统性淀粉样变性护理
- 化工过程安全管理导则 (一)
- 四川成都经济技术开发区(龙泉驿区)“蓉漂人才荟”招聘笔试题库2025
- 解除委托退费协议书
- 国家能源集团共享服务中心有限公司-企业报告(业主版)
- 国民经济行业分类代码(2024年版)
- 《缺血性卒中脑细胞保护临床实践中国专家共识(2025年版)》解读
- 《顺丰速运探索》课件
评论
0/150
提交评论