Пример #1
0
 private SyntaxToken EvalUnary(ConstantSyntaxToken value, UnaryOperationType type)
 {
     switch (type)
     {
         case UnaryOperationType.Factorial: return SyntaxToken.Constant(MathEx.Factorial(value.Value));
         default: throw new NotSupportedException();
     }
 }
Пример #2
0
 private SyntaxToken EvalBinary(ConstantSyntaxToken left, ConstantSyntaxToken right, BinaryOperationType type)
 {
     double lval = left.Value;
     double rval = right.Value;
     switch (type)
     {
         case BinaryOperationType.Add: return SyntaxToken.Constant(lval + rval);
         case BinaryOperationType.Subtract: return SyntaxToken.Constant(lval - rval);
         case BinaryOperationType.Multiply: return SyntaxToken.Constant(lval * rval);
         case BinaryOperationType.Divide: return SyntaxToken.Constant(lval / rval);
         case BinaryOperationType.Modulus: return SyntaxToken.Constant(lval % rval);
         case BinaryOperationType.Power: return SyntaxToken.Constant(Math.Pow(lval, rval));
         default: throw new NotSupportedException();
     }
 }
Пример #3
0
 protected override SyntaxToken VisitConstant(ConstantSyntaxToken token)
 {
     return(SyntaxToken.Constant(0));
 }
Пример #4
0
 protected override SyntaxToken VisitConstant(ConstantSyntaxToken token)
 {
     return(new NullSyntaxToken());
 }
Пример #5
0
 protected override SyntaxToken VisitConstant(ConstantSyntaxToken token)
 {
     return token;
 }
Пример #6
0
 protected abstract SyntaxToken VisitConstant(ConstantSyntaxToken token);