第二章 课程设计内容
2-1.设计思想
利用“算符优先法”,将一个表达式分为算符(包括运算符和界限符)和操作数
两部分。在计算表达式时,由运算的优先规则知,在运算的每一步中,任意两个相
继出现的算符 A1 和 A2 之间的优先关系至多是下面三种之一:
1)A1<A2 A1 的优先权低与 A2;
2)A1>A2 A1 的优先权高与 A2;
3)A1=A2 A1 的优先权等于 A2。
为实现算符优先法,使用两个数据段,一个称为 OPTR,用来寄存算符;另一个
称为 OPND,用来寄存操作数或运算结果。
算法的基本思想是:
1)首先置操作数的数据段为空的,表达式起始符“=”放到算符数据段的第一个元素;
2)依次读入表达式中的每个字符,若是操作数,就将其放入 OPND,若是运算符,
则与 OPTR 数据段中的最后一个运算符进行比较优先权后做相应的操作,如下:
(假设 B1 为 OPTR 数据段中的最后一个运算符,B2 读入的运算符)
B1<B2 时,将 B2 放到 OPTR 中去,并将 OPTR 的 DI 增加 1,接受下一个输入;
B1=B2 时,将放 B1 的 OPTR 单元置为空,并将 OPTR 的 DI 减少 1,接受下一个
输入;
B1>B2 时,将 B1 取出,,并将 OPTR 的 DI 减 1,将 OPND 中的两个单元的数据
取出,
并将 OPND 的 DI 减 2,将两数进行 B1 运算,将结果放到 OPND 中,将 DI 加 1。
并将 OPND 的 DI 减 2,将两数进行 B1 运算,将结果放到 OPND 中,将 DI 加 1
直到整个表达式求值完成,既输入为“=”与 OPTR 数据段中的第一个字符相等。
详细操作如下:
操作 A:将 B2 放到 OPTR 中去,并将 OPTR 的 DI 增加 1,接受下一个输入
操作 B:将放 B1 的 OPTR 单元置为空,并将 OPTR 的 DI 减少 1,接受下一个输入