- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
信息与电气工程学院编译原理及实践实验名称词法分析实验学生姓名学生学号专业班级指导教师二○一六年十一月十一日目录1.问题描述及需求分析11.1问题描述11.2需求分析12.总体设计12.1实验目的12.2自动机状态转换图13.详细设计23.1样例source.tny文件23.2实验原理24.系统测试及结果34.1测试用例的设计34.2测试结果记录和分析35.实验心得总结4参考文献:4附录 源程序5评分表91.问题描述及需求分析1.1问题描述输入:source.tny输出:token[40]tokenstring[40][30]以下样例程序已经能够识别:变量、数、赋值号、分号要求修改代码使其能够识别:变量、数、赋值号、分号、加号、减号、乘号、除号1.2需求分析通过修改代码使得自动机能够更多的实现运算符号的识别功能,使用TINY语言调试一个程序,加深同学对词法分析的认识以及理解。2.总体设计2.1实验目的调试词法分析程序,加深对词法分析原理的理解,掌握编写简单词法分析程序的一般方法步骤。2.2自动机状态转换图图1状态转换图3.详细设计3.1样例source.tny文件x12:=100;y34:=200;z56:=x12$3.2实验原理typedef enum{LPAREN,RPAREN,SEMI,ASSIGN,NUM,ID,DOLLAR,PLUS,MINUS,TIMESOVER}tokentype;/*记号*/typedef enum{ START,INASSIGN,INCOMMENT,INNUM,INID,INSEMI,INDOLLAR,DON E ,INADD,INMINUS,INTIME,INDIVIDE}statetype;/*状态*/tokentype token[40]; /*存记号*/char tokenstring[40][30];/*存记号串*/int wordindex=0; /*以上两个数组的索引*/int back=0; /*0不回退字符,1回退字符*/int c; /*存获得的字符*/int getnextchar(); /*获得下一个字符,并忽略无效的字符*/int gettoken(); /*获得下一个记号*/ switch (state)/*识别state是什么,进行选择*/if(c==$)/*遇见‘$’停止*/其中词法分析作成一个子程序,由另一个主程序调用,每次调用返回一个单词,输出标识符、常数、运算符号等由主程序来完成。4.系统测试及结果4.1测试用例的设计图片2测试文件4.2测试结果记录和分析图片3测试结果5.实验心得总结通过编译原理实验一——词法分析,使得我对词法分析的流程有了更加深刻的了解,虽然只是在原程序上做修改,但是在调试程序的过程中,尤其是测试自己添加的部分的时候,发现不对,然后又继续修改,看到运行成功的那一刻,真的很开心。既达到了复习的过程,又学习到了新知识,学习就是这样子的过程。这次试验时我对词法分析有了更深刻的了解,收获不少。问题:1.没有把需要编译的文件放在同一目录下,导致系统找不到source.tny文件;2.编写source.tny时没有注意到中英文的转化。参考文献:编译原理及实践 机械工程出版社中国大学幕课网附录 源程序#includestdio.h#includectype.h FILE * source; /*源程序文件句柄*/ typedef enum{LPAREN,RPAREN,SEMI,ASSIGN,NUM,ID,DOLLAR,PLUS,MINUS,TIMES,OVER}tokentype;/*记号*/ typedef enum{START,INASSIGN,INCOMMENT,INNUM,INID,INSEMI,INDOLLAR,DONE,INADD,INMINUS,INTIME,INDIVIDE}statetype;/*状态*/ tokentype token[40]; /*存记号*/ char tokenstring[40][30];/*存记号串*/ int wordindex=0; /*以上两个数组的索引*/ int back=0; /*0不回退字符,1回退字符*/ int c; /*存获得的字符*/int getnextchar(); /*获得下一个字符*/int gettoken(); /*获得下一个记号*/main(){ int i; source=fopen(.\\source.tny,r); while(gettoken()!=0)/*循环判断*/{wordindex++; } for(i=0;i=wordindex;i++)printf(word:%s\n
有哪些信誉好的足球投注网站
文档评论(0)