程序设计语言与编译实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

南华大学计算机科学与技术学院实验报告(2012~2013学年度第二学期)课程名称程序设计语言与编译实验名称编写词法分析器与算符优先分析表姓名Xx学号Xx专业软件工程班级11软卓01班地点八教教师Xx2013年6月目录实验一编写词法分析器.................................................................................................................11.实验目的及要求..................................................................................................................11.1实验目的....................................................................................................................11.2实验要求.....................................................................................................................12.实验步骤..............................................................................................................................12.1设定单词符号的编码................................................................................................12.2状态转换图................................................................................................................22.3采用的部分函数........................................................................................................23.实验内容..............................................................................................................................33.1流程图........................................................................................................................33.2程序源代码................................................................................................................34.实验结果..............................................................................................................................95.实验总结分析......................................................................................................................9实验二编写算符优先分析表.......................................................................................................111.实验目的及要求................................................................................................................111.1实验目的..................................................................................................................111.2实验要求..................................................................................................................112.实验步骤............................................................................................................................112.1设定表达式与需分析句子......................................................................................112.2求FirstVT集和LastVT集.....................................................................................112.3根据FirstVT和LastVT集构造算符优先表.........................................................113.实验内容............................................................................................................................113.1流程图.....................................................................................................................113.2程序源代码.............................................................................................................114.实验结果............................................................................................................................205.实验总结分析....................................................................................................................20南华大学计算机科学与技术学院实验报告1实验一编写词法分析器1.实验目的及要求1.1实验目的编译程序是一个十分复杂的加工处理程序,它将便于人们阅读但不能直接在计算机上执行的源代码程序翻译成语义上等价且可以在计算机上执行的目标程序。为此,一般将整个编译程序划分为5个处理阶段,它们是词法分析、语法分析、中间代码生成(语义分析)、代码优化和目标代码生成。1.2实验要求花一周时间明确语言的词法规则,根据具体情况,由同学们自己选取C语言的一个适当大小的子集,写出基本保留字、标识符、常数、运算符、分隔符和程序例。初步编制好程序。上机调试,发现错误,再修改完善。第二次上机调试通过。2.实验步骤2.1设定单词符号的编码单词符号类别编码助记符标识符1$SYMBOL常数整型2$CONSTANTint3$INTif4$IFelse5$ELSEwhile6$WHILEfor7$FORread8$READwrite9$WRITE+10$ADD-11$SUB*12$MUL/13$DIV14$L=15$LE16$G=17$GE!=18$NE==19$E=20$ASSIGN(21$LPAR)22$RPAR,23$COM;24$SEM南华大学计算机科学与技术学院实验报告2表1单词符号的编码2.2状态转换图2.3采用的部分函数(1)character()用来得到最新读入的字符。(2)token_flag()字符的匹配函数,返回字符串(关键字)的类别编码。2字母非字母与数字1字母与数字0空白4数字非数字3数字+6;58:非=7=9(10,11)12其它1714非=131516=图1一个简单词法分析器的状态转换图南华大学计算机科学与技术学院实验报告3(2)token_symbol()字符的匹配函数,返回字符串(标志符)的类别编码。(4)getchar()读入一个字符的函数。(5)concat()连接字符串的函数,两个参数,将后一个参数的内容添加到第一个参数的末尾,并返回第一个参数。(6)letter()判断当前字符是否为字母。(7)digit()判断当前字符是否为数字。(8)handle()程序的主要处理输入的函数,包括判断当前输入字符的内容,并实现字符处理,保存到文件。3.实验内容3.1流程图3.2程序源代码#includeiostream#includestring#includestdio.h词法分析语法分析语义分析代码优化代码生成单词序列语法单位中间代码高效中间代码汇编汇编代码目标代码高级语言源程序表格管理出错处理图2编译工作流程图南华大学计算机科学与技术学院实验报告4usingnamespacestd;stringflag[]={-1,-1,-1,int,if,else,while,for,read,write,+,-,*,/,,=,,=,!=,==,=,(,),,,;};stringbetter[]={-1,$SYMBOL,$CONSTANT,$INT,$IF,$ELSE,$WHILE,$FOR,$READ,$WRITE,$ADD,$SUM,$MUL,$DIV,$L,$LE,$G,$GE,$NE,$E,$ASSIGN,$LPAR,$RPAR,$COM,$SEM};stringsymbol[]={using,include,namespace,std,cin,cout,return,a,b,endl,main};//其他关键字,属于标志符类别stringmain_string;//输入的字符转变为字符串intnum;//输入的字符串转变为数字intline_num=1;//文件行的计数intcount=0;//对连续运算符的标记intsign=0;//对连续运算符的计次boolletter_continue_in=false;//是否连续输入字符boolnum_continue_in=false;//是否连续输入数字boolequal_continue_in=false;//是否连续输入等于boollarge_continue_in=false;//是否连续输入大于等于boolsmall_con

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功