/// <summary> /// /// </summary> /// <param name="rule"></param> /// <returns></returns> public bool CanApplyRule(AffixRule rule) { int n = AffixRules.Length; char checkingRuleName= rule.Name; for (int i = 0; i < n; ++i) { if (AffixRules[i].Name == checkingRuleName) return true; } return false; }
/// <summary> /// Informs whether the newRule can be combined with appliedRule (to a word). /// </summary> /// <param name="newRule"></param> /// <param name="appliedRule"></param> /// <returns></returns> private bool CanCombineRules(AffixRule newRule, AffixRule appliedRule) { if (newRule == null || appliedRule == null) return true; // Only 1 rule of each type (SuffixRule of PrefixRule) can be combined. if (newRule is SuffixRule && appliedRule is SuffixRule) return false; if (newRule is PrefixRule && appliedRule is PrefixRule) return false; // SuffixRule and PrefixRule can be comined if they are both combinable (CanCombine= true). if (newRule.CanCombine && appliedRule.CanCombine) return true; return false; }