实现语义分析及代码生成器_第1页
实现语义分析及代码生成器_第2页
实现语义分析及代码生成器_第3页
实现语义分析及代码生成器_第4页
实现语义分析及代码生成器_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家人才培养模式创新实验区、云南省教学团队、云南大学软件学院教育创新基金(编号:2009EI08)联合资助项目实现语义分析及代码生成器姓 名: 学 号: 专业:软件工程任课教师: 柳青 编制时间: 2014年6月13日成绩: 云南大学软件学院2012年6月制表1、实验目标1.2.强化对系统软件综合工程实现能力的训练;1、实验目标1.2.强化对系统软件综合工程实现能力的训练;加强对实现语义分析及代码生成器原理、方法和基本实现技术的理解;2、实现方案设计算法1.需求分析:PL/0文法的巴斯科范式表示〈程序>::=〈分程序〉.〈分程序>::=[〈常量说明部分>][<变量说明部分>][<过程说明部分>]<语句〉〈常量说明部分>::=const<常量定义>{,<常量定义>};〈常量定义>::=<标识符>=<无符号整数〉〈无符号整数>::=<数字>{<数字〉}〈标识符>::=〈字母>{<字母>1〈数字〉}〈变量说明部分>::=var〈标识符〉{,<标识符>};〈过程说明部分>::=〈过程首部><分程序>{;<过程说明部分〉}〈过程首部>::=procedure〈标识符〉;〈语句>::=〈赋值语句>|<条件语句>|<当循环语句>|<过程调用语句〉|〈复合语句>|<读语句>|<写语句>|<空〉〈赋值语句>::=〈标识符>:=〈表达式〉〈表达式〉::=[+|-]<项>{<加法运算符><项〉}〈项>::=〈因子>{<乘法运算符><因子〉}〈因子>::=<标识符>|<无符号整数>|‘(’<表达式〉‘)’〈加法运算符>::=+|-〈乘法运算符>::=*|/〈条件>::=〈表达式><关系运算符><表达式〉|odd〈表达式〉〈关系运算符>::==|<>|<|<=|>|>=〈条件语句>::=if〈条件〉then〈语句〉〈当循环语句>::=while〈条件〉do〈语句〉〈过程调用语句>::=call<标识符〉〈复合语句>::=begin<语句>{;<语句>}end〈读语句>::=read‘(’〈标识符>{,〈标识符〉}‘)’〈写语句>::=write‘(’〈表达式>{,〈表达式〉}‘)’〈字母>::=a|b|c|d x|y|z〈数字>::=0|1|2|3......8|93、实现步骤语义分析,主要是检查各种语法成分的语义是否符合语义规定,例如参与运算的表达式类型是否一致,赋值语句的赋值左部和右部类型的一致性,数组元素的维数与数组说明维数的一致性,每一维的下标是否越界,在相同作用域中名字是否被重复说明等。语法制导翻译:在语义分析过程中,随着分析的步步进展,根据每个产生式对应的语义子程序(或语义规则描述的语义动作)进行翻译的办法称作语法制导翻译。在分析栈中我们加了一个语义值的栈,用来存储每一个文法符号的语义值。中间代码我们采用四元式的表达方式来表示。四元式:表示形式(op;ARG1,ARG2,RESULT)按运算顺序列出,四元式表示比较利于代码优化。简单的赋值语句的翻译:语义变量,表示变量即标识符字符串E.place语义变量,表示存放E值的变量名在符号表中的入口位置或一整数码(临时变量)Lookup(id,name)语义过程,对查符号表,若找到,则返回其在符号表中的位置,否则返回nil,体现先定义后使用的原则GEN(op;ARG1,ARG2,RESULT)语义过程,生成四元式,填进四元式表。Newtemp语义过程,生成一临时变量Ti。4、结构算法存储方式:String[]reserveWord用来保存保留字信息相关方法:publicvoidsyntaxError(Stringmessage){}输出错误消息publicTreeNodestmtSequence()(}开始语法分析publicTreeNodestatement()(}语句节点分析publicTreeNodefactor()(}表达式因子节点分析publicvoidprintTree(TreeNodet)(}输出语法树publicchargetChar(char[]c){}获取一个字符publicchargetNextChar(char[]c){}获取下一个字符5、测试用例test.txt2ia[l+x]=y+3*43intz;Z、4Z44z=5;5readz;6writez+2;if(x<0)y=z+2m己f[0]+4;输入是上面的文本内容6、运行结果曰控制台以亡已终止nMain(14)[Java应用程序]D:\ProgramFiIes\Java\jre6\bin\javaw.exe(2011-6-28下午01:43:56)1:intm[0.8];:ra.[l+x]=y+3*4;3:intz;4:z=5;5:readz;■6:writez+2;7:if(x<0>y=z+2;:a=m[0]+4;Syntaxerroratline1:unexpectedtoken->0.8Syntaxerroratline7:unexpectedtoken->ySyntaxerroratline7:unexpectedtoken->=Syntajserroratline7:unexpectedtoken->+Syntaxerroratline8:unexpectedtoken->fileaverfneed;Syntaxerroratline8:unexpectedtoken->fileaverfneed;int:m[0.fnassignto:rn[]TOC\o"1-5"\h\zop: +n-™: 1id:x□p: +id:yop: *nmi: 3num:4int:zassignto:zmim.:5read:zwriteop: +id:znuin.:2玲:<id:xnum:0assignto:znum:2assignto:a.op: +id:m[]num:0nun:4对输入的内容进行分析的结果。7、实验体会这次的实验算是较难的一次实验了,对于四元式的生成我倒是在实验四中给弄的,但把PL0转换为目标代码还是有一定的难度,但还是弄完了。概括来说,P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论