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);
Пример #3
0
 public bool CanAssemble(ITokenGroup group)
 => group.TokenTypes.Contains(typeof(ParenthesisToken));
Пример #4
0
 public bool CanAssemble(ITokenGroup group)
 => group.TokenTypes.Length == 1 && group.TokenTypes[0] == typeof(DigitToken);
 public GroupAssemblingException(string message, ITokenGroup failureGroup)
     : base(message)
 {
     AssemblingFailedFor = failureGroup;
 }