表达式求值及符号推导

2012-09-21 07:14:12英昌盛
长春大学学报 2012年10期
关键词:系统

英昌盛

(吉林师范大学 计算机学院,吉林 四平 136000)

0 引言

表达式的分析、求值等运算是编译程序中的一个关键部分。研究翻译程序的工作原理和工作流程,对于教师的教学和研究,对于学生理论联系实际都具有较为实用的意义和价值。

1 系统设计及概要设计

1.1 运算符和数据类型的支持

系统支持算术运算、关系运算和逻辑运算。算术运算符有包括:()、+、-、*、/、^(乘方),其中^为新增运算符。逻辑运算符包括:!、&(逻辑与为化简运算符)、|(逻辑或为化简运算符)。关系运算符包括:>、>=、==、_(负号)。

系统支持整数及浮点数。在进行算术运算、关系运算、逻辑运算时运算规则和结合性基本同C语言中相应的规则一致。

1.2 数据结构

用户输入的数据是随机的,同时程序处理数据时用栈这种结构实现较好,所以系统采用两个链栈[1]来保存运算量和运算符。因输入的变量个数无法确定,系统采用动态生成链表[2]来存储。

2 系统实现

2.1 算符优先级及数据结构

系统使用结构体数组charindex[]和OPTable[]保存运算符及其对应的优先级。charindex[]用来存放运算符和该运算符的栈外、内优先级在OPTable[]中的下标。charindex[]结构体数组的op域用来保存第i个运算符,index域用来存放第i个运算符在OPTable[]结构体数组相应元素中的下标,如表1[3]所示。

表1 运算符及其栈内、外优先级

OPTable[]的opri域和ipri域分别表示charindex[]数组中第i个运算符对应的栈外、栈内优先级。为方便运算和节省栈的域,OPTable[]的元素个数较charindex[]的元素个数多三项。系统只用一个整数表示一个运算符,而>=,==,<=等运算符都是两个……

登录APP查看全文

猜你喜欢
系统
Smartflower POP 一体式光伏系统
工业设计(2022年8期)2022-09-09 07:43:20
WJ-700无人机系统
ZC系列无人机遥感系统
北京测绘(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA显示系统
基于UG的发射箱自动化虚拟装配系统开发
半沸制皂系统(下)
FAO系统特有功能分析及互联互通探讨
连通与提升系统的最后一块拼图 Audiolab 傲立 M-DAC mini
PLC在多段调速系统中的应用
1-Bit人机交互系统