/** * Recoge un conjunto de símbolos proposicionales de una lista de sentencias dadas. * * @param sentences * una lista de sentencias en la que recoger símbolos. * @return un conjunto de todos los símbolos de proposición que no son siempre ciertos o falsos contenidos en las sentencias de entrada. */ public static ISet <PropositionSymbol> GetSymbolsFrom(params Sentence[] sentences) { ISet <PropositionSymbol> result = new HashSet <PropositionSymbol>(); // LinkedHashSet SymbolCollector symbolCollector = new SymbolCollector(); foreach (Sentence s in sentences) { result = s.Accept(symbolCollector, result); } return(result); }
public void TestCollectSymbolsFromComplexSentence() { Sentence sentence = (Sentence)parser.Parse("(~B11 | P12 | P21) & (B11 | ~P12) & (B11 | ~P21)"); ISet <Sentence> s = new HashSet <Sentence>(SymbolCollector.GetSymbolsFrom(sentence)); // En C# si usas ISet<PropositionSymbol> no te va a dejar mirar si Contains algo que son Sentences :-( Assert.AreEqual(3, s.Count); Sentence b11 = parser.Parse("B11"); Sentence p21 = parser.Parse("P21"); Sentence p12 = parser.Parse("P12"); Assert.IsTrue(s.Contains(b11)); Assert.IsTrue(s.Contains(p21)); Assert.IsTrue(s.Contains(p12)); }