public DiphoneRule(string[] symbol1, string[] symbol2, DiphoneRuleAction action, char negator) { NegSymbol1 = Array.IndexOf <string>(symbol1, "ALL") > -1; NegSymbol2 = Array.IndexOf <string>(symbol2, "ALL") > -1; foreach (string s in symbol1) { if (!(NegSymbol1 ^ (s[0] == negator))) { if (s[0] == negator) { Symbol1.Add(s.Substring(1)); } else { Symbol1.Add(s); } } } foreach (string s in symbol2) { if (!(NegSymbol2 ^ (s[0] == negator))) { if (s[0] == negator) { Symbol2.Add(s.Substring(1)); } else { Symbol2.Add(s); } } } _RuleAction = action; }