示例#1
0
        /**
         * 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);
        }
示例#2
0
        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));
        }