public CLS_Content.Value ComputeValue(CLS_Content content)
{
content.InStack(this);
CLS_Content.Value result = new CLS_Content.Value();
result.type = typeof(bool);
CLS_Content.Value left = listParam[0].ComputeValue(content);
CLS_Content.Value right = listParam[1].ComputeValue(content);
if (left.type == null || right.type == null)
{
if (mathop == logictoken.equal)
{
result.value = left.value == right.value;
}
else if (mathop == logictoken.not_equal)
{
result.value = left.value != right.value;
}
}
else if ((Type)left.type == typeof(bool) && (Type)right.type == typeof(bool))
{
if (mathop == logictoken.equal)
{
result.value = (bool)left.value == (bool)right.value;
}
else if (mathop == logictoken.not_equal)
{
result.value = (bool)left.value != (bool)right.value;
}
else
{
throw new Exception("bool 不支持此运算符");
}
}
else
{
result.value = content.environment.GetType(left.type).MathLogic(content, mathop, left.value, right);
}
content.OutStack(this);
return result;
}