Пример #1
0
 protected final function IsExpressionConstant(CoreExpression $Expression)
 {
     switch (true) {
         case $Expression instanceof ConstantExpression:
             return true;
         case $Expression instanceof ColumnExpression:
             return false;
         case $Expression instanceof UnaryOperationExpression:
             return $this->IsExpressionConstant($Expression->GetOperandExpression());
         case $Expression instanceof BinaryOperationExpression:
             return $this->IsExpressionConstant($Expression->GetLeftOperandExpression()) && $this->IsExpressionConstant($Expression->GetRightOperandExpression());
         case $Expression instanceof CompoundBooleanExpression:
             return $this->AreExpressionsConstant($Expression->GetBooleanExpressions());
         case $Expression instanceof FunctionCallExpression:
             return $this->AreExpressionsConstant($Expression->GetArgumentValueListExpression()->GetValueExpressions());
         default:
             return false;
     }
 }