public IState <IReadOnlySet <object> > Next(string param) { if (EndState.IsValidState(param)) { return(new EndState(State)); } if (OperatorState.IsValidState(param)) { return(new ErrorState(State, new InvalidOperationException($"Unexpected operator: \"{param}\"."))); } return(parser.TryParse(param, out var set, out var errors) ? new OperatorState(parser, set) : new ErrorState(State, errors)); }
public IState <IReadOnlySet <object> > Next(string param) { if (EndState.IsValidState(param)) { return(new ErrorState(State, new InvalidOperationException("Unexpected EOF."))); } if (parser.TryParse(param, out var set, out var errors)) { var next = Calculator.Apply(op, State, set); return(new OperatorState(parser, next)); } if (OperatorState.IsValidState(param)) { return(new ErrorState(State, new InvalidOperationException($"Unexpected operator: \"{param}\"."))); } return(new ErrorState(State, errors)); }