public ICLS_Expression Compiler_Expression_NegativeLogic(IList<Token> tlist, ICLS_Environment content, int pos, int posend)
{
int expbegin = pos;
int bdep;
int expend2 = FindCodeAny(tlist, ref expbegin, out bdep);
if (expend2 != posend)
{
//expend2 = posend;
LogError(tlist, "无法识别的取反表达式:", expbegin, posend);
return null;
}
//else
{
ICLS_Expression subvalue;
bool succ = Compiler_Expression(tlist, content, expbegin, expend2, out subvalue);
if (succ && subvalue != null)
{
if (subvalue is CLS_Expression_Math2Value || subvalue is CLS_Expression_Math2ValueAndOr || subvalue is CLS_Expression_Math2ValueLogic)
{
var pp = subvalue.listParam[0];
CLS_Expression_NegativeLogic v = new CLS_Expression_NegativeLogic(pp.tokenBegin, pp.tokenEnd, pp.lineBegin, pp.lineEnd);
v.listParam.Add(pp);
subvalue.listParam[0] = v;
return subvalue;
}
else
{
CLS_Expression_NegativeLogic v = new CLS_Expression_NegativeLogic(pos, expend2, tlist[pos].line, tlist[expend2].line);
v.listParam.Add(subvalue);
return v;
}
}
else
{
LogError(tlist, "无法识别的取反表达式:", expbegin, posend);
return null;
}
}
}
}