Exemplo n.º 1
0
        public static InterpreterState StartFromInitialState(ILexemesStack stack)
        {
            var openingBracket = new OpeningBracket(SymbolFactory.CreateSymbol('(', -1));

            stack.Push(openingBracket);

            return(new OpeningBracketOperatorState());
        }
Exemplo n.º 2
0
        public double?Execute(string expression)
        {
            var state = InterpreterState.StartFromInitialState(_stack);

            for (var index = 0; index < expression.Length; index++)
            {
                var symbol = SymbolFactory.CreateSymbol(expression, index);

                state = state.MoveToNextState(symbol, _stack, _context);
                state.Execute(_stack, _context);
            }

            state = state.MoveToFinalState(expression.Length, _stack, _context);
            state.Execute(_stack, _context);
            return(_stack.GetResult(_context));
        }
Exemplo n.º 3
0
        public InterpreterState MoveToFinalState(int lastSymbolIndex, ILexemesStack stack, ExecutorContext context)
        {
            var lastSymbol = SymbolFactory.CreateSymbol(')', lastSymbolIndex);

            return(MoveToNextState(lastSymbol, stack, context));
        }