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 EndState(State)); } if (TryParse(param, out var op)) { return(new RightArgumentState(argumentParser, State, op)); } if (argumentParser.TryParse(param, out _, out _)) { return(new ErrorState(State, new InvalidOperationException("Infix operator missing."))); } return(new ErrorState(State, new InvalidOperationException($"Unknown operator: \"{param}\"."))); }
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)); }