Exemplo n.º 1
0
        protected override object OnRuleExpression(INonterminalToken token)
        {
            if (token == null)
            {
                throw new ArgumentNullException(nameof(token));
            }

            var expression = Visit <IExpression>(token[0]);

            var children = token.Nonterminal(1).Children;

            if (children.Count > 0)
            {
                var expressions = new List <IExpression> {
                    expression
                };
                foreach (var child in children)
                {
                    expressions.Add(Visit <IExpression>(child));
                }
                expression = new Alternates(expressions);
            }

            return(expression);
        }
Exemplo n.º 2
0
        public Name(string preferred, params string[] alternates)
        {
            if (string.IsNullOrWhiteSpace(preferred))
            {
                throw new ArgumentException($"{nameof(preferred)} cannot be empty or null.");
            }
            if (alternates.Any(x => string.IsNullOrWhiteSpace(x)))
            {
                throw new ArgumentException($"{nameof(alternates)} cannot have empty or null members.");
            }
            if (preferred.ContainsWhitespace())
            {
                throw new ArgumentException($"{nameof(preferred)} cannot contain any whitespace");
            }
            if (alternates.Any(x => x.ContainsWhitespace()))
            {
                throw new ArgumentException($"None of {nameof(alternates)} can contain whitespace.");
            }

            Preferred              = preferred;
            Alternates             = alternates;
            AlternatesByLengthDesc = Alternates.OrderByDescending(x => x.Length);
        }
Exemplo n.º 3
0
 public override int GetHashCode()
 {
     return(HashCode.Combine(Preferred, Alternates.GetOrderIndependentHashCode()));
 }
 public bool MatchesPart(string partID)
 {
     return(PartID == partID || Alternates.Contains(partID));
 }