没有合适的资源?快使用搜索试试~ 我知道了~
WHILE循环语句的翻译程序设计(简单优先法_三地址输出).doc
5星 · 超过95%的资源 需积分: 10 11 下载量 112 浏览量
2013-01-13
16:47:38
上传
评论 1
收藏 120KB DOC 举报
温馨提示
试读
18页
WHILE循环语句的翻译程序设计(简单优先法_三地址输出).doc )
资源推荐
资源详情
资源评论
目录
1 问题域描述..........................................3
2 文法及属性文法的描述.........................3
2.1 WHILE 循环语句的文法................................3
2.2 WHILE 循环语句的属性文法............................4
3 语法分析方法及中间代码形式的描述................4
3.1 语法分析方法........................................4
3.2 中间代码形式描述....................................6
4 编译系统的概要设计.................................7
4.1 词法分析............................................7
4.2 语法制导翻译........................................8
5 详细的算法描述.....................................8
5.1 文法设计...........................................8
5.2 算法描述...........................................8
5.3 源程序代码.........................................9
6 软件的调试过程和结果测试.........................19
6.1 调试过程............................................19
6.2 结果测试............................................19
7 使用说明............................................20
8 课设总结............................................20
9 参考文献.............................................22
武汉理工大学《编译原理》课程设计
WHILE 循环语句的翻译程序设计
(简单优先法、输出三地址表示)
1 问题域描述
while 循环语句的翻译程序设计(简单优先法,输出单地址表示),要求完成:
(1) 用 C++语言正确编写程序,完成 WHILE 循环语句的翻译程序设计。
(2) 求能正确进行词法分析,语法分析,并能正确的输出预期结果。
(3) 根据指定的文法,判定程序的正确性。
本次课程设计中要求设计一个 WHILE 循环语句的词法﹑语法及语义分析程序,语
法分析选择简单优先法,采用语法制导翻译输出中间代码三元式。通过设计、编制、调
试一个 WHILE 循环语句的语法及语义分析程序,加深对语法及语义分析原理的理解,
实现功能。
while 循环语句的格式为:while(P){do A},其中 A 为循环体,可为一个或多个赋
值语句;P 为循环控制条件。while 循环语句首先根据循环控制条件 P 进行判断,若满足
条件则执行循环体 A,否则执行下面的程序段;
本次课程设计中系统首先要进行词法分析,即从左到右把源文件的字符序列逐个进
行扫描,产生一个个的单词序列,作为语法分析的输入从而继续编译过程。
该程序的语法分析读入词法分析的结果,并判断输入语句是否满足 while 循环语句
的文法所描述的形式。通过简单优先法对语句进行分析,看是否能通过给定的输入串归
约到文法的开始符号。在语法分析的同时进行语义分析,最后输出三元式的代码。
1
武汉理工大学《编译原理》课程设计
2 文法及属性文法的描述
2.1WHILE 循环语句的文法
定义一个文法,文法 G(S)如下:
S-> while(P){A};
A->id=E;
E->TE'
E'->+TE' | -TE' | e
T->FT'
T'->*FT' | /FT' | e
F->(E) | id
P->E rop id
rop-> > | < | >= | <= | != | ==
2.2 WHILE 循环语句的属性文法
3 语法分析方法及中间代码形式的描述
3.1 语法分析方法
3.1.1 简单优先法
简单优先分析法是按照文法符号(终结符和非终结)的优先关系确定句柄的,因此我
们首先介绍任意两个文法符号之间的优先关系是怎样确定的,及如何构造优先关系表。
首先定义优先关系的表示:
X=Y 表示 X 和 Y 的优先关系相等
X>Y 表示 X 的优先性比 Y 的优先性大
X<Y 表示 X 的优先性比 Y 的优先性小
2
产生式
语义规则
S→while P{A} S.addr:=newlabel;
E.true:=newlabel;
E.false:=S.next;
S1.next:=S.begin;
S.code:=gen(S.begin’:’‖E。code‖
gen(E.true’:’) ‖S1.code‖
gen(‘goto’ S.begin)
武汉理工大学《编译原理》课程设计
这样我们就可对已知文法中的任意两个文法符号 X,Y 按其在举行中可能会出现的相
邻关系确定他们的优先关系。
3.1.2 简单优先法的缺点
对文法的要求高,而且也要把文法符号的关系首先表示出来,这普遍性不是太好。
{/** S w h i l e E d o { B }a = + 1 ; > ( b c )
# **/
/* S */ { N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N,
N, N, 1 },
/* w/ { N, N, 0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N,
N, N, N },
/* h*/ { N, N, N, 0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N,
N, N, N },
/* i/ { N, N, N, N, 0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, -1,
N, N },
/* l/ { N, N, N, N, N, 0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N,
N, N },
/* e */ { N, N, N, N, N, N, 0, N, N, N, N, N, N, N, N, N, N, N, N, N,
N, N, N },
/* E*/ { N, N, N, N, N, N, N, 0, N, N, N, N, N, N, N, N, N, N, N, N,
N, N, N },
/* d*/ { N, N, N, N, N, N, N, N, 0, N, N, N, N, N, N, N, N, N, N, N,
N, N, N },
/* o*/ { N, N, N, N, N, N, N, N, N, 0, N, N, N, N, N, N, N, N, N, N,
N, N, N },
/* { { N, N, N, N, N, N, N, N, N, N, 0, N, N, N, N, N, N, N, N, N, N,
N, N },
/* A/ { N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 0, N, N,
N, N },
/*}*/ { N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N,
N, 0, N },
/* a */ { N, N, N, N, N, N, N, N, N, N, N, N, N, N, 0, N, N, 0, N, N,
N, N, N },
/* = */ { N, N, N, N, N, N, N, N, N, N, N, N, 0, N, N, N, N, N, N, N,
N, N, N },
/* + */ { N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 0, N, N, N, N,
N, N, N },
/* 1 */ { N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 0, N, N, N,
N, N, N },
/* ; */ { N, N, N, N, N, 1, N, N, N, N, N, N, N, N, N, N, N, N, N, N,
N, N, N },
/* > */ { N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 0,
N, N, N },
/* ( */ { N, N, N, N, N, N, N, N, N, N, N, 0, -1, N, N, N, N, N, N, N,
3
剩余17页未读,继续阅读
资源评论
- weixin_415481442017-12-27非常完整!!!给大佬跪下了!!感谢!!!
Navie_not_Naive
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功