public bool RemoveRule(GrammarRule rule) { HashSet<Word> insertions; if (rules.TryGetValue(rule.WordToReplace, out insertions) && insertions.Remove(rule.WordToInsert)) { if (insertions.Count == 0) rules.Remove(rule.WordToReplace); return true; } return false; }
public bool AddRule(GrammarRule rule) { if (rule.WordToReplace == rule.WordToInsert) return false; HashSet<Word> insertions; if (!rules.TryGetValue(rule.WordToReplace, out insertions)) { insertions = new HashSet<Word>(); rules[rule.WordToReplace] = insertions; } return insertions.Add(rule.WordToInsert); }