欢迎来到天天文库
浏览记录
ID:35625838
大小:126.50 KB
页数:12页
时间:2019-04-03
《《编译原理》课程设计报告--词法分析器》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、201X-201X学年第x学期《编译原理》课程设计报告院系:计算机科学与技术班级:XX级XX班学生姓名:XXXXXX学号:XXXXXXXX指导老师:XXXXXX计算机科学与技术学院监制20XX年X月目录1.课程设计的目的2.课程设计的内容和要求3.问题分析和相关知识介绍4.设计思路和关键问题及其解决方案5.测试和结果分析6.总结和心得体会附件1:参考文献附件2:核心源代码1.课程设计的目的(1)编写词法分析器(2)加深对词法分析器工作原理的了解和认识2.课程设计的内容和要求编写词法分析器,词法分析器能够识别关系算符,词法分析器能够识别标识符和关键字,词法分析器能够识别无符号数。
2、3.问题分析和相关知识介绍构成词法分析器的一种简单方法是用状态转换图来描述源语言词法记号的结构,然后手工把这种状态转换图翻译成为识别词法记号的程序。词法分析器的任务是把构成源程序的字符流翻译成词法记号流。4.设计思路和关键问题及其解决方案把自然语言构造成正规式,把正规式构造成有限自动机NFA,然后根据子集构造法把有限自动机构造成无限自动机DFA,根据极小化DFA状态数算法把DFA构造成最简DFA,其次根据最简DFA画出转换表,根据转换表画出装换图,最后根据装换图就可以编写词法分析器。5.测试和结果分析6.总结和心得体会通过本次试验,不仅仅是我学会了C#基础知识,而且还是我对词法
3、分析器有了更深入的认识,虽然在编写词法分析器过程中遇到了很多困难,例如:C#语言不熟悉,对此法分析器的工作原理分析的不透彻,但在老师和同学的帮助下,我有了很大的提高,通过不断的努力最终顺利的完成了课程设计,很感谢帮助我的XX同学和XX老师。附件1:参考文献《编译原理(第2版)》高等教育出版社;《C#程序设计及应用教程(第2版)》人民教育出版社。附件2:1.Code文档截图2.程序源代码usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.IO;namespaceLexicalAnalys
4、is{classProgram{staticstring[]keys={"static","true","return","string","Length","break","Console","WriteLine","bool","false","ture","void","if","else","while","int","float","for","enum","default","case","double","do"};staticListkey=newList();//保存关键字staticListbsf=newLis
5、t();//保存标识符staticListsz=newList();//保存数字staticListgx=newList();//保存关系运算符staticListys=newList();//保存数字运算符//数字,标识符,空白,关系符,运算符staticvoidMain(string[]args){string[]date=File.ReadAllLines(@"d:\code.txt");//路径,并存入datafor(inti=0;i6、;i++){Console.WriteLine("第"+(i+1)+"行code:"+date.GetValue(i));analysisByLine(date[i]);}//分别输出存储在四个List中的StringConsole.WriteLine("关键字,输入回车");//输出所有的关键字Console.ReadLine();foreach(stringidinkey){Console.WriteLine(id);}Console.WriteLine("标识符,输入回车");//输出所有的标识符Console.ReadLine();foreach(stringidinb7、sf){Console.WriteLine(id);}Console.WriteLine("数字,输入回车");//输出所有的数字Console.ReadLine();foreach(stringidinsz){Console.WriteLine(id);}Console.WriteLine("关系运算符,输入回车");//输出所有的关系运算符Console.ReadLine();foreach(stringidingx){Console.WriteLine(id);}Console.Wri
6、;i++){Console.WriteLine("第"+(i+1)+"行code:"+date.GetValue(i));analysisByLine(date[i]);}//分别输出存储在四个List中的StringConsole.WriteLine("关键字,输入回车");//输出所有的关键字Console.ReadLine();foreach(stringidinkey){Console.WriteLine(id);}Console.WriteLine("标识符,输入回车");//输出所有的标识符Console.ReadLine();foreach(stringidinb
7、sf){Console.WriteLine(id);}Console.WriteLine("数字,输入回车");//输出所有的数字Console.ReadLine();foreach(stringidinsz){Console.WriteLine(id);}Console.WriteLine("关系运算符,输入回车");//输出所有的关系运算符Console.ReadLine();foreach(stringidingx){Console.WriteLine(id);}Console.Wri
此文档下载收益归作者所有