广工编译原理实验报告(参考格式)

上传人:j****9 文档编号:46007207 上传时间:2018-06-20 格式:DOC 页数:16 大小:688.79KB
返回 下载 相关 举报
广工编译原理实验报告(参考格式)_第1页
第1页 / 共16页
广工编译原理实验报告(参考格式)_第2页
第2页 / 共16页
广工编译原理实验报告(参考格式)_第3页
第3页 / 共16页
广工编译原理实验报告(参考格式)_第4页
第4页 / 共16页
广工编译原理实验报告(参考格式)_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《广工编译原理实验报告(参考格式)》由会员分享,可在线阅读,更多相关《广工编译原理实验报告(参考格式)(16页珍藏版)》请在金锄头文库上搜索。

1、实实 验验 报报 告告课程名称课程名称 编译原理编译原理 学生学院学生学院 计算机学院计算机学院 专业班级专业班级20102010 级计算机科学与技术四班级计算机科学与技术四班 学学 号号 31100060153110006015 学生姓名学生姓名 张法光张法光 指导教师指导教师 李杨李杨 2013 年 1 月 07 日目录目录1 1、实验概述实验概述.5.51、实验目的.5.52、实验内容.5.53、实验概述.5.5二、结构设计说明二、结构设计说明.5.51、PL/0 语言编译器.6.62、总流程图.6.63、各功能模块描述.7.7三、主要成分描述三、主要成分描述.7.7 符号表.7.7 运

2、行时存储组织和管理.7.7 语法分析方法.8.8 中间代码表示.8.84 4、测试用例测试用例.9.91、关于 IF ELSE 功能的测试.10.102、关于不等号“#”替换为“步骤方法:步骤方法: (1)把源代码中的程序段 SSYM#=NEQ; 删除或注释消去。 (2)在 GetSym()过程中把分析到的) SYM=NEQ;SYM=NEQ; GetCh();GetCh();else SYM=LSS; 3 3、增加条件语句的、增加条件语句的 ELSEELSE 子句,要求:写出相关文法,语法图,语子句,要求:写出相关文法,语法图,语义规则。义规则。(1 1)相关文法)相关文法G(S):G(S):

3、 SifSif S S elseelse S S | | ifif S S | | a a(2 2)语法图)语法图(3 3)语义规则语义规则产生式语 义 规 则Sif B then M S1 backpatch(E.truelist, M.quad );S.nextlist:=merge(E.falselist, S1.nextlist) M M.quad := nextquad ; N N.nextlist:=makelist(nextquad);Gen( j , , , 0 ) Sif B then M1 S1 N else M2 S2 backpatch(E.truelist, M1.q

4、uad ); backpatch(E.falselist, M2.quad ); S.nextlist:=merge(S1.nextlist, N.nextlist, S2.nextlist) (4 4)完成情况)完成情况修改前case IFSYM: GetSym(); CONDITION(SymSetUnion(SymSetNew(THENSYM,DOSYM),FSYS),LEV,TX); if (SYM=THENSYM) GetSym(); else Error(16); CX1=CX; GEN(JPC,0,0); STATEMENT(FSYS,LEV,TX); CODECX1.A=CX;

5、 break;修改后修改后case IFSYM:GetSym();CONDITION(SymSetUnion(SymSetNew(THENSYM,DOSYM),FSYS),LEV,TX);if (SYM=THENSYM) GetSym();else Error(16);CX1=CX; GEN(JPC,0,0); /*保存 JPC 条件跳转指令的地址,等待 else 首地址或指令结束地址的回填*/STATEMENT(SymSetUnion(SymSetNew(ELSESYM),FSYS),LEV,TX);if(SYM=ELSESYM) /若遇到 ELSEGetSym(); /读取单词CX2=CX

6、;GEN(JMP,0,0);/保存无条件跳转指令的地址,等待结束指令地址的回填CODECX1.A=CX; /把 ELSE 首地址回填给 JPC 条件转移指令跳转的地址STATEMENT(FSYS,LEV,TX);/执行语句CODECX2.A=CX; /结束指令的地址回填到无条件跳转的地址else / THEN 字句后无 ELSE CODECX1.A=CX; /cx 为 then 后语句执行完的位置,/即前面未定的跳转地址break;六、心得体会六、心得体会本次实验中增添保留字和运算符以及修改单词是学习编译程序的基本操作,易于理解, 所以做得比较顺利。实现单词对应的扩展功能则比较麻烦,需要不断的调试,直到保证语 法单词检测结果正确才能够完成。头一次实验不是十分理解,经过老师的讲解和提醒总算 有了清晰的基本思路。虽然在调试实验 ELSE 字句功能的时候遇到不少小错误,在和同学探 讨和认真分析后,最终找到了解决方案。实验最宝贵就是肯动手,不怕错误,反复调试, 逐步排除错误,最终锻炼到自己的实践能力和巩固了编译程序知识。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号