def computeConstBinaryExpr (op, opd0, opd1):
assert(isinstance(op, EXPR.BinaryOp))
assert(isinstance(opd0, EXPR.ConstantExpr))
assert(isinstance(opd1, EXPR.ConstantExpr))
v0 = opd0.value()
v1 = opd1.value()
assert((type(v0) is int) or (type(v0) is float) or isinstance(v0, Fraction))
assert((type(v1) is int) or (type(v1) is float) or isinstance(v1, Fraction))
if (op.label == "+"):
return EXPR.ConstantExpr(v0 + v1)
elif (op.label == "-"):
return EXPR.ConstantExpr(v0 - v1)
elif (op.label == "*"):
return EXPR.ConstantExpr(v0 * v1)
elif (op.label == "/"):
return EXPR.ConstantExpr(v0 / v1)
elif (op.label == "^"):
return EXPR.ConstantExpr(v0 ** v1)
else:
assert(False)
# ========
# string to operator
# ========
评论列表
文章目录