没有合适的资源?快使用搜索试试~ 我知道了~
编译原理课程设计_算术表达式、for、while语句转换为四元式.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 3 下载量 82 浏览量
2021-10-04
15:14:50
上传
评论 2
收藏 870KB DOC 举报
温馨提示
试读
30页
编译原理课程设计_算术表达式、for、while语句转换为四元式.doc
资源推荐
资源详情
资源评论
.
计算机与信息学院
《操作系统与编译原理联合课程设计报
告》
1 / 30
专题:编译原理部分
学生__
学 号:
专业__
指导
.
2014 年 7 月
一、设计目标
设计一个语法制导翻译器,将算术表达式、 语句、 语句翻译成四元式。要求
先确定一个定义算术表达式、 语句、 语句的文法,为其设计一个语法分析程序,
为每条产生式配备一个语义子程序,按照一遍扫描的语法制导翻译方法,实现翻译程序。
对用户输入的任意一个正确的表达式,程序将其转换成四元式输出。
二、设计思路
开发平台:
解决这个问题的方案分为以下几个步骤:
将算数表达式、 语句、 语句转换为四元式的第一步为对读入的表达式进行
处理,即删除不必要的空格、回车、换行等,保证之后的步骤能够顺利进行。
分析算术表达式、 语句、 语句的文法。
通过词法分析判断语句中的每个字符的类型,如:数字、字母、符号等。
建立每种文法的 分析表,通过每个文法的 分析表对相应的表达式进行语
法分析。
在语法分析正确的情况下,通过语法分析的中间过程的符号栈输出四元式,四元式
的形式为:()。
(一)算术表达式转换为四元式
将算术表达式转换为四元式首先考虑了括号的
问题,对于不同的算术表达式第一步进行词法分析,
即确定各种符号的位置。而括号中的式子是优先级
最高的,应该最先进行处理。我使用了一个数组记
录算术表达式中括号的位置,并且定义了 !""
和 !## 函数对括号的乘除法和加减法分别进行
处理。后将括号的式子以四元式的形式输出。
通过以上转换,已将原算术表达式中的括号中
的容使用大写字母’$%、’&%''等代替(其中定义
声明了 "( 函数,用来将括号部分替换为大
写字母)。新的式子中,只含有加减乘除以与赋值
这四种运算,后根据优先级的不同,逐步生成四元
式。
其算法流程图如右图所示。
2 / 30
.
(二)for 语句转换为四元式
1.For 语句的文法如下:
)*+,--./0-1
)*+,-2-3/0-1
,*+45"
*+46"
.*+4
2*+4+"
3*+477
0*+4
54
4
0*+4
54
"
0*+4
5"4
其中 "表示常数 "(, 表示关键字 , 4 表示一般标识符。 循环体部的表达
式一般为算术表达式,而算术表达式转换为四元式的方法在第一部分已给出,此处 0 只考
虑比较简单的情况。
2.for 语句的 LR(0)分析表如下:
3 / 30
.
3. 基本算法流程:
本算法定义声明了两个结构体:一个是 84 结构体,其中 " 型的 9 中存储当
前符号的类型,)( 型的 中存储的为当前符号,( 型的 只有在符号
类型为数字的情况下才进行存储,存储数字的大小;另一个为 ": 结构体,这个结构体
是实现语法分析中的符号栈和状态栈使用的,并未这两个栈分别定义了各自的 函数和
函数。
除此之外,本算法中的 分析表通过二维数组存储。其中分为 "( 表和
表。"( 表中的状态转换符号,用 * 表示,规约的符号,用 * 表示。
具体的算法流程图如下:
4 / 30
.
(三)while 语句转换为四元式
1.while 语句的文法如下:
)*+&/,1
,*+$,
,*+$
$*+;$
$*+
<&*+=
>&*+
其中 、、、/、1、;、=、 ; 和 均为终结符,而 )、$、&、, 这些大写
字母均为非终结符。= 表示比较运算符,; 表示算术运算符, 表示合法标识符。
5 / 30
剩余29页未读,继续阅读
资源评论
- _ocean92022-06-25用户下载后在一定时间内未进行评价,系统默认好评。
- m0_519242152022-07-15资源很受用,资源主总结的很全面,内容与描述一致,解决了我当下的问题。
- 克姆鹿_calm2022-05-21用户下载后在一定时间内未进行评价,系统默认好评。
huayuya123
- 粉丝: 26
- 资源: 31万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功