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

  • 10
  • 0
  • 约3.77千字
  • 约 13页
  • 2021-11-03 发布于天津
  • 举报

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

专业专注 专业专注 编译原理课程实验报告 实验3 :语义分析 姓名 张玉 院系 软件学院 学号 1113710304 任课教师 陈堇K 指导教师 实验地点 软件学院三楼机房 实验时间 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 r E1 + E2 ( E. addr := newtemp; gen(E.addr := E1.addr + E2.addr)} E r E1 * E2 ( E.addr := newtemp; gen(E.addr := E1.addr * E2.addr)} E r- E1 ( E.addr := newtemp; gen(E.addr := uminus E1.addr)} E (E1) {E.addr := E1.addr } E r id { E.addr := lookup(id.name);} ?分支 S r if b then S1 else S2 {B.true := newlabel(); B.false := newlabel(); next := S.next; next := S.next; S.code :=B.code || label(B.true) || S1.code || gen( goto ,$|.naxt)(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)

1亿VIP精品文档

相关文档