IEnumerable <IToken> Assemble(ITokenGroup group) { if (_numberAssembler.CanAssemble(group)) { return(_numberAssembler.Assemble(group.Tokens)); } if (_parenthesisAssembler.CanAssemble(group)) { return(_parenthesisAssembler.Assemble(group.Tokens)); } if (_operationAssembler.CanAssemble(group)) { return(_operationAssembler.Assemble(group.Tokens)); } var exceptionMessage = $"Unknown rule for assembling token group."; throw new GroupAssemblingException(exceptionMessage, group); }
public bool CanAssemble(ITokenGroup group) => group.Tokens.Count == 1 && group.TokenTypes[0] == typeof(OperationToken);
public bool CanAssemble(ITokenGroup group) => group.TokenTypes.Contains(typeof(ParenthesisToken));
public bool CanAssemble(ITokenGroup group) => group.TokenTypes.Length == 1 && group.TokenTypes[0] == typeof(DigitToken);
public GroupAssemblingException(string message, ITokenGroup failureGroup) : base(message) { AssemblingFailedFor = failureGroup; }