1113710304-张玉-编译原理实验报告-语义分析.docxVIP

1113710304-张玉-编译原理实验报告-语义分析.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1113710304-张玉-编译原理实验报告-语义分析

编译原理课程实验报告 实验3:语义分析 姓名 张玉 院系 软件学院 学号 1113710304 任课教师 陈鄞 指导教师 实验地点 软件学院三楼机房 实验时间 2013年11月19日 实验课表现 出勤、表现得分 实验报告 得分 实验总分 操作结果得分 一、需求分析 得分 要求:阐述语义分析系统所要完成的各个功能,并给出如下语言成分所对应的语义动作 ? 变量说明 def_stmt→type id { array.type = type.type; array.name=id.name; array.length = type.length; array.dimension = 0; array.arri = new Set(int)} array {vars.type = type.type; vars.length = type.length} vars ; vars → ,id { array.type = vars.type; array.name = id.name; array.length = vars.length; array.dimension = 0; array.arri = new Set(int)} array { vars1.type=vars.type; vars1.length = vars.length } vars1 vars → ξ array → [ int ] { array1.type = array.type; array1.name = array.name; array1.length = array.length; array1.dimension = array1.dimension +1; array1.arri = array.arri U int.value} array1 array → ξ{new Record(array.type, array.name, array.length, offset, array.arri ); offset += array.lengh} ? 赋值 S → id := E { p := lookup(id.name); gen( p ‘:=’ E.addr)} E → E1 + E2 { E. addr := newtemp; gen(E.addr ‘:=’ E1.addr ‘+’ E2.addr)} E → E1 * E2 { E.addr := newtemp; gen(E.addr ‘:=’ E1.addr ‘*’ E2.addr)} E → ?E1 { E.addr := newtemp; gen(E.addr ‘:=’ ‘uminus’ E1.addr)} E → (E1) { E.addr := E1.addr } E → id { E.addr := lookup(id.name);} ? 分支 S → if B then S1 else S2 {B.true := newlabel(); B.false := newlabel(); S1.next := S.next; S2.next := S.next; S.code :=B.code || label(B.true) || S1.code || gen(‘goto’,S.next) || label(B.false) || S2.code } ? 循环 S → while B do S1 {S.begin:= newlabel(); B.true := newlabel(); B.false := S.next; S1.next := S.begin; S.code:=label(S.begin)||B.code|| label(B.true)||S1.code|| gen(‘goto’, S.begin) } 二、概要设计 得分 要求:给出系统概要设计,以及必要的系统宏观层面设计图,如系统框架图、数据流图、功能模块结构图等以及相应的文字说明。注意符号表的相关处理以及错误处理。 我的语义分析器包括工具栏,代码输入框,标识符表和语义分析结果四个部分。 图2-1 本程序根据之前两个实验的结果进一步进行语义分析,主要是通过在第二个实验句法分析过程中添加语义分析功能完成的。 在代码编写之前,我将程序的功能模块分为界面及主控程序,实体类和工具类三大部分。 MyCompiler是整个程序运行的入口,是主控程序;ComplierFrame完成程序的界面,以及界面里事件的响应;Token是词法分析中词法单元的实体类;ErrorToken是错误的词法单元实体类;Symbol是句法分析中符号的实体类;Production是产生式的实体类;ErrorProduction是句

文档评论(0)

专注于电脑软件的下载与安装,各种疑难问题的解决,office办公软件的咨询,文档格式转换,音视频下载等等,欢迎各位咨询!

1亿VIP精品文档

相关文档