Пример #1
0
        public EquationSolver(IOperatorFactory operatorFactory)
        {
            if (operatorFactory == null) {
                throw new ArgumentNullException("operatorFactory");
            }

            this.OperatorFactory = operatorFactory;
        }
Пример #2
0
 public DataStructureApplication(IPrintMenu menuPrinter, IUserInterface userInterface,
                                 IDataStructureFactory <TDataType> dataStructureFactory,
                                 IOperatorFactory <TDataType> operatorFactory, IMapDsAndOperations dsAndOperationsMapper)
 {
     this.menuPrinter           = menuPrinter ?? throw new ArgumentNullException(nameof(menuPrinter));
     this.userInterface         = userInterface ?? throw new ArgumentNullException(nameof(userInterface));
     this.dsAndOperationsMapper = dsAndOperationsMapper ?? throw new ArgumentNullException(nameof(dsAndOperationsMapper));
     this.dataStructureFactory  = dataStructureFactory ?? throw new ArgumentNullException(nameof(dataStructureFactory));
     this.operatorFactory       = operatorFactory ?? throw new ArgumentNullException(nameof(operatorFactory));
 }
        public Stack<string> Generate(IEnumerable<string> tokens, IOperatorFactory operatorFactory, IEnumerable<string> parameterNames)
        {
            var operationStack = new Stack<string>();
            var RPNStack = new Stack<string>();
            var parameterNamesSet = new HashSet<string>(parameterNames);

            foreach (var token in tokens) {
                if (token == "(") {
                    operationStack.Push(token);
                } else if (token == ")") {
                    while (operationStack.Count != 0 && operationStack.Peek() != "(") {
                        RPNStack.Push(operationStack.Pop());
                    }

                    operationStack.Pop();

                    if (operationStack.Count != 0 && operatorFactory.HasOperatorForCode(operationStack.Peek())) {
                        RPNStack.Push(operationStack.Pop());
                    }
                } else if (IsNumber(token)) {
                    RPNStack.Push(token);
                } else if (operatorFactory.HasOperatorForCode(token)) {
                    while (operationStack.Count != 0
                            && operatorFactory.HasOperatorForCode(operationStack.Peek())
                            && operatorFactory.GetOperatorByCode(token).Priority <= operatorFactory.GetOperatorByCode(operationStack.Peek()).Priority) {
                        RPNStack.Push(operationStack.Pop());
                    }

                    operationStack.Push(token);
                } else if (operatorFactory.HasOperatorForCode(token)) {
                    operationStack.Push(token);
                } else if (parameterNamesSet.Contains(token)) {
                    RPNStack.Push(token);
                } else {
                    throw new CalculatorException(string.Format("Unrecognized token: {0}", token));
                }
            }

            while (operationStack.Count != 0) {
                RPNStack.Push(operationStack.Pop());
            }

            // Reverse the stack
            RPNStack = new Stack<string>(RPNStack);

            return RPNStack;
        }
Пример #4
0
 public MathParser(IMathLexer lexer, IOperatorFactory operatorFactory)
 {
     this.lexer = lexer;
     this.operatorFactory = operatorFactory;
 }
Пример #5
0
 public OperationConverter(IOperatorFactory operatorFactory)
 {
     _operatorFactory = operatorFactory;
 }
Пример #6
0
 internal ParseTreeVisitor(IOperatorFactory operatorFactory)
 {
     _operatorFactory = operatorFactory;
 }
Пример #7
0
 public StringModifier(IOperationIdentifier operationIdentifier, IOperatorFactory operationFactory)
 {
     _operationIdentifier = operationIdentifier;
     _operationFactory    = operationFactory;
 }
Пример #8
0
 public QueryBuilder(IOperatorFactory operatorFactory )
 {
     _operatorFactory = operatorFactory;
 }
Пример #9
0
 public Calculator(IOperatorFactory operatorFactory)
 {
     _operatorFactory = operatorFactory;
 }
Пример #10
0
 public OperatorEgine(IOperatorFactory operatorFactory)
 {
     _operatorFactory = operatorFactory;
 }
Пример #11
0
 public MathParser(IMathLexer lexer, IOperatorFactory operatorFactory)
 {
     this.lexer           = lexer;
     this.operatorFactory = operatorFactory;
 }
Пример #12
0
 public OperatorInMemoryCachedRepository(IOperatorFactory operatorFactory)
 {
     this.allOperatorsInitialized = false;
     this.operatorsDictionary     = new ConcurrentDictionary <OperatorCodes, Operator>();
     this.operatorFactory         = operatorFactory;
 }