public static InterpreterState StartFromInitialState(ILexemesStack stack) { var openingBracket = new OpeningBracket(SymbolFactory.CreateSymbol('(', -1)); stack.Push(openingBracket); return(new OpeningBracketOperatorState()); }
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)); }
public InterpreterState MoveToFinalState(int lastSymbolIndex, ILexemesStack stack, ExecutorContext context) { var lastSymbol = SymbolFactory.CreateSymbol(')', lastSymbolIndex); return(MoveToNextState(lastSymbol, stack, context)); }