public NumericExpression(ExpressionElements elementsToInclude)
 {
     AdditionalVariableChars = "_$";
     if ((elementsToInclude & ExpressionElements.ArithmeticOperators) != ExpressionElements.None)
     {
         Operators.Add(new UnaryPlusOperator());
         Operators.Add(new NumericNegationOperator());
         Operators.Add(new AdditionOperator());
         Operators.Add(new SubtractionOperator());
         Operators.Add(new MultiplicationOperator());
         Operators.Add(new DivisionOperator());
         Operators.Add(new FloorDivisionOperator());
         Operators.Add(new ModulusOperator());
         Operators.Add(new RoundingOperator());
         Operators.Add(new PowerOperator());
     }
     if ((elementsToInclude & ExpressionElements.LogicalOperators) != ExpressionElements.None)
     {
         Operators.Add(new LogicalNegationOperator());
         Operators.Add(new ConditionalOrOperator());
         Operators.Add(new ConditionalAndOperator());
     }
     if ((elementsToInclude & ExpressionElements.ComparisonOperators) != ExpressionElements.None)
     {
         Operators.Add(new EqualityOperator());
         Operators.Add(new InequalityOperator());
         Operators.Add(new LessThanOperator());
         Operators.Add(new LessThanOrEqualToOperator());
         Operators.Add(new GreaterThanOperator());
         Operators.Add(new GreaterThanOrEqualToOperator());
     }
     if ((elementsToInclude & ExpressionElements.AssignmentOperators) != ExpressionElements.None)
     {
         Operators.Add(new AssignmentOperator());
         if ((elementsToInclude & ExpressionElements.ArithmeticOperators) != ExpressionElements.None)
         {
             Operators.Add(new AssignmentOperator<AdditionOperator>());
             Operators.Add(new AssignmentOperator<SubtractionOperator>());
             Operators.Add(new AssignmentOperator<MultiplicationOperator>());
             Operators.Add(new AssignmentOperator<DivisionOperator>());
             Operators.Add(new AssignmentOperator<FloorDivisionOperator>());
             Operators.Add(new AssignmentOperator<ModulusOperator>());
             Operators.Add(new AssignmentOperator<RoundingOperator>());
             Operators.Add(new AssignmentOperator<PowerOperator>());
         }
         if ((elementsToInclude & ExpressionElements.LogicalOperators) != ExpressionElements.None)
         {
             Operators.Add(new AssignmentOperator<ConditionalOrOperator>());
             Operators.Add(new AssignmentOperator<ConditionalAndOperator>());
         }
     }
     if ((elementsToInclude & ExpressionElements.Constants) != ExpressionElements.None)
     {
         //Constants.Add(ConstantElement.PI);
         //Constants.Add(ConstantElement.E);
     }
     if ((elementsToInclude & ExpressionElements.MathFunctions) != ExpressionElements.None)
     {
         Functions.Add(new AbsFunction());
         Functions.Add(new CeilingFunction());
         Functions.Add(new FloorFunction());
         Functions.Add(new MaxFunction());
         Functions.Add(new MinFunction());
         Functions.Add(new PowFunction());
         //Functions.Add(new RandFunction());
         Functions.Add(new RoundFunction());
         Functions.Add(new SignFunction());
         Functions.Add(new TruncateFunction());
     }
     if ((elementsToInclude & ExpressionElements.Statements) != ExpressionElements.None)
     {
         Functions.Add(new CoalesceStatement());
         Functions.Add(new IfStatement());
         Statements.Add(new ForStatement());
         Statements.Add(new WhileStatement());
     }
     if ((elementsToInclude & ExpressionElements.NewLineOperator) != ExpressionElements.None)
     {
         Operators.Add(new NewLineOperator());
     }
 }
Exemplo n.º 2
0
 public NumericExpression(ExpressionElements elementsToInclude)
 {
     AdditionalVariableChars = "_$";
     if ((elementsToInclude & ExpressionElements.ArithmeticOperators) != ExpressionElements.None)
     {
         Operators.Add(new UnaryPlusOperator());
         Operators.Add(new NumericNegationOperator());
         Operators.Add(new AdditionOperator());
         Operators.Add(new SubtractionOperator());
         Operators.Add(new MultiplicationOperator());
         Operators.Add(new DivisionOperator());
         Operators.Add(new FloorDivisionOperator());
         Operators.Add(new ModulusOperator());
         Operators.Add(new RoundingOperator());
         Operators.Add(new PowerOperator());
     }
     if ((elementsToInclude & ExpressionElements.LogicalOperators) != ExpressionElements.None)
     {
         Operators.Add(new LogicalNegationOperator());
         Operators.Add(new ConditionalOrOperator());
         Operators.Add(new ConditionalAndOperator());
     }
     if ((elementsToInclude & ExpressionElements.ComparisonOperators) != ExpressionElements.None)
     {
         Operators.Add(new EqualityOperator());
         Operators.Add(new InequalityOperator());
         Operators.Add(new LessThanOperator());
         Operators.Add(new LessThanOrEqualToOperator());
         Operators.Add(new GreaterThanOperator());
         Operators.Add(new GreaterThanOrEqualToOperator());
     }
     if ((elementsToInclude & ExpressionElements.AssignmentOperators) != ExpressionElements.None)
     {
         Operators.Add(new AssignmentOperator());
         if ((elementsToInclude & ExpressionElements.ArithmeticOperators) != ExpressionElements.None)
         {
             Operators.Add(new AssignmentOperator <AdditionOperator>());
             Operators.Add(new AssignmentOperator <SubtractionOperator>());
             Operators.Add(new AssignmentOperator <MultiplicationOperator>());
             Operators.Add(new AssignmentOperator <DivisionOperator>());
             Operators.Add(new AssignmentOperator <FloorDivisionOperator>());
             Operators.Add(new AssignmentOperator <ModulusOperator>());
             Operators.Add(new AssignmentOperator <RoundingOperator>());
             Operators.Add(new AssignmentOperator <PowerOperator>());
         }
         if ((elementsToInclude & ExpressionElements.LogicalOperators) != ExpressionElements.None)
         {
             Operators.Add(new AssignmentOperator <ConditionalOrOperator>());
             Operators.Add(new AssignmentOperator <ConditionalAndOperator>());
         }
     }
     if ((elementsToInclude & ExpressionElements.Constants) != ExpressionElements.None)
     {
         //Constants.Add(ConstantElement.PI);
         //Constants.Add(ConstantElement.E);
     }
     if ((elementsToInclude & ExpressionElements.MathFunctions) != ExpressionElements.None)
     {
         Functions.Add(new AbsFunction());
         Functions.Add(new CeilingFunction());
         Functions.Add(new FloorFunction());
         Functions.Add(new MaxFunction());
         Functions.Add(new MinFunction());
         Functions.Add(new PowFunction());
         //Functions.Add(new RandFunction());
         Functions.Add(new RoundFunction());
         Functions.Add(new SignFunction());
         Functions.Add(new TruncateFunction());
     }
     if ((elementsToInclude & ExpressionElements.Statements) != ExpressionElements.None)
     {
         Functions.Add(new CoalesceStatement());
         Functions.Add(new IfStatement());
         Statements.Add(new ForStatement());
         Statements.Add(new WhileStatement());
     }
     if ((elementsToInclude & ExpressionElements.NewLineOperator) != ExpressionElements.None)
     {
         Operators.Add(new NewLineOperator());
     }
 }