protected virtual void Visit(LogicExp logicExp) { var leftExp = logicExp.LeftNode; var rightExp = logicExp.RightNode; Expression leftExpression = null; Expression rightExpression = null; if (leftExp is LogicExp) { Visit((LogicExp)leftExp); } else if (leftExp is ComparrisonExp) { Visit((ComparrisonExp)leftExp); } else { throw new Exception(); } if (rightExp is LogicExp) { Visit((LogicExp)rightExp); } else if (rightExp is ComparrisonExp) { Visit((ComparrisonExp)rightExp); } else { throw new Exception(); } }
protected virtual Expression Visit(LogicExp logicExp) { var leftExp = logicExp.LeftNode; var rightExp = logicExp.RightNode; Expression leftExpression = null; Expression rightExpression = null; if (leftExp is LogicExp) { leftExpression = Visit((LogicExp)leftExp); } else if (leftExp is ComparrisonExp) { leftExpression = Visit((ComparrisonExp)leftExp); } else { throw new Exception(); } if (rightExp is LogicExp) { rightExpression = Visit((LogicExp)rightExp); } else if (rightExp is ComparrisonExp) { rightExpression = Visit((ComparrisonExp)rightExp); } else { throw new Exception(); } return(OpDic[logicExp.BaseToken.OpType](leftExpression, rightExpression)); }
protected override void Visit(LogicExp logicExp) { base.Visit(logicExp); var rightExp = temp.Pop(); var leftExp = temp.Pop(); temp.Push(OpDic[logicExp.BaseToken.OpType](leftExp, rightExp)); }