_张玉_编译原理实验报告-语义分析要点

_张玉_编译原理实验报告-语义分析要点

ID:18835790

大小:133.28 KB

页数:9页

时间:2018-09-26

_张玉_编译原理实验报告-语义分析要点_第1页
_张玉_编译原理实验报告-语义分析要点_第2页
_张玉_编译原理实验报告-语义分析要点_第3页
_张玉_编译原理实验报告-语义分析要点_第4页
_张玉_编译原理实验报告-语义分析要点_第5页
资源描述:

《_张玉_编译原理实验报告-语义分析要点》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理课程实验报告实验3:语义分析姓名张玉院系软件学院学号1113710304任课教师陈鄞指导教师实验地点软件学院三楼机房实验时间2013年11月19日实验课表现出勤、表现得分实验报告得分实验总分操作结果得分一、需求分析得分要求:阐述语义分析系统所要完成的各个功能,并给出如下语言成分所对应的语义动作·变量说明def_stmt→typeid{array.type=type.type;array.name=id.name;array.length=type.length;array.dimension=0;array.a

2、rri=newSet(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=newSet(int)}array{vars1.type=vars.type;vars1.length=vars.length}vars1vars→ξarray→[int]{a

3、rray1.type=array.type;array1.name=array.name;array1.length=array.length;array1.dimension=array1.dimension+1;array1.arri=array.arriUint.value}array1array→ξ{newRecord(array.type,array.name,array.length,offset,array.arri);offset+=array.lengh}·赋值S→id:=E{p:=lookup(id

4、.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→ifBthenS1else

5、S2{B.true:=newlabel();B.false:=newlabel();S1.next:=S.next;S2.next:=S.next;S.code:=B.code

6、

7、label(B.true)

8、

9、S1.code

10、

11、gen(‘goto’,S.next)

12、

13、label(B.false)

14、

15、S2.code}·循环S→whileBdoS1{S.begin:=newlabel();B.true:=newlabel();B.false:=S.next;S1.next:=S.begin;S.code:=label(S.

16、begin)

17、

18、B.code

19、

20、label(B.true)

21、

22、S1.code

23、

24、gen(‘goto’,S.begin)}二、概要设计得分要求:给出系统概要设计,以及必要的系统宏观层面设计图,如系统框架图、数据流图、功能模块结构图等以及相应的文字说明。注意符号表的相关处理以及错误处理。我的语义分析器包括工具栏,代码输入框,标识符表和语义分析结果四个部分。图2-1本程序根据之前两个实验的结果进一步进行语义分析,主要是通过在第二个实验句法分析过程中添加语义分析功能完成的。在代码编写之前,我将程序的功能模块分为界面及主控程序,

25、实体类和工具类三大部分。MyCompiler是整个程序运行的入口,是主控程序;ComplierFrame完成程序的界面,以及界面里事件的响应;Token是词法分析中词法单元的实体类;ErrorToken是错误的词法单元实体类;Symbol是句法分析中符号的实体类;Production是产生式的实体类;ErrorProduction是句法分析中产生错误的时候使用的产生式实体类;Id是标示符实体类,保存了语义分析后的标识符表;Node是语法分析树的节点类,帮助完成语法分析树的构造;LL类使用LL(1)分析法完成句法分析,同

26、时完成语义分析;MyScanner完成了词法分析。图2-2三、详细设计及实现得分要求:对如下工作进行展开描述(1)核心数据结构的设计本程序使用了两个新的实体类,分别是Id和Node。Id是标识符,里面也包含了该标识符在本程序中存储的地址和长度等信息。Id的属性如下:privateStringname;//名privateStrin

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。