예제 #1
0
        public override VfpExpression Visit(VfpArithmeticExpression expression)
        {
            switch (expression.ExpressionKind)
            {
            case VfpExpressionKind.Divide:
            case VfpExpressionKind.Minus:
            case VfpExpressionKind.Modulo:
            case VfpExpressionKind.Multiply:
            case VfpExpressionKind.Plus:
                return(Visit(new VfpBinaryExpression(expression.ExpressionKind,
                                                     expression.ResultType,
                                                     expression.Arguments[0],
                                                     expression.Arguments[1])));

            case VfpExpressionKind.UnaryMinus:
                Write(" -(");
                expression.Arguments[0].Accept(this);
                Write(")");
                break;

            default:
                throw new InvalidOperationException(expression.ExpressionKind.ToString());
            }

            return(expression);
        }
 public virtual VfpExpression Visit(VfpArithmeticExpression expression)
 {
     return(new VfpArithmeticExpression(expression.ExpressionKind,
                                        expression.ResultType,
                                        VisitVfpExpressionList(expression.Arguments)));
 }