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); }
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); }
public override int GetHashCode() { return(HashCode.Combine(Preferred, Alternates.GetOrderIndependentHashCode())); }
public bool MatchesPart(string partID) { return(PartID == partID || Alternates.Contains(partID)); }