public DisjunctionRule( string?ruleName, IRuleOutput?ruleOutput, IEnumerable <TaggedRule> rules, bool?hasInterleave = null, bool?isRecursive = null, bool?isCaseSensitive = null) : base( ruleName, ruleOutput, hasInterleave, isRecursive, isCaseSensitive) { if (rules == null || rules.Count() == 0) { throw new ArgumentNullException(nameof(rules)); } _rules = new TaggedRuleCollection(rules); if (!_rules.DoAllHaveNames && !_rules.DoAllNotHaveNames) { throw new ParsingException( "Can't have both named & unnamed rule match in one disjunction rule"); } }
public SequenceRule( string?ruleName, IRuleOutput?ruleOutput, IEnumerable <TaggedRule> rules, bool?hasInterleave = null, bool?isRecursive = null, bool?isCaseSensitive = null) : base( ruleName, ruleOutput, hasInterleave, isRecursive, isCaseSensitive) { if (rules == null || !rules.Any()) { throw new ArgumentNullException(nameof(rules)); } _rules = new TaggedRuleCollection(rules); }