package aima.core.logic.propositional.visitors; import java.util.HashSet; import java.util.Set; import aima.core.logic.propositional.parsing.ast.Sentence; import aima.core.logic.propositional.parsing.ast.Symbol; import aima.core.logic.propositional.parsing.ast.UnarySentence; import aima.core.util.SetOps; /** * @author Ravi Mohan * */ public class NegativeSymbolCollector extends BasicTraverser { @SuppressWarnings("unchecked") @Override public Object visitNotSentence(UnarySentence ns, Object arg) { Set<Symbol> s = (Set<Symbol>) arg; if (ns.getNegated() instanceof Symbol) { s.add((Symbol) ns.getNegated()); } else { s = SetOps .union(s, (Set<Symbol>) ns.getNegated().accept(this, arg)); } return s; } @SuppressWarnings("unchecked") public Set<Symbol> getNegativeSymbolsIn(Sentence s) { return (Set<Symbol>) s.accept(this, new HashSet<Symbol>()); } }