/* * Created on Dec 4, 2004 * */ package aima.logic.propositional.visitors; import java.util.HashSet; import java.util.Set; import aima.logic.propositional.parsing.ast.Sentence; import aima.logic.propositional.parsing.ast.Symbol; import aima.logic.propositional.parsing.ast.UnarySentence; import aima.util.SetOps; /** * @author Ravi Mohan * */ public class PositiveSymbolCollector extends BasicTraverser { public Object visitSymbol(Symbol symbol, Object arg) { Set s = (Set) arg; s.add(symbol);//add ALL symbols not discarded by the visitNotSentence // mathod return arg; } public Object visitNotSentence(UnarySentence ns, Object arg) { Set s = (Set) arg; if (ns.getNegated() instanceof Symbol) { //do nothing .do NOT add a negated Symbol } else { s = new SetOps().union(s, (Set) ns.getNegated().accept(this, arg)); } return s; } public Set getPositiveSymbolsIn(Sentence sentence) { return (Set) sentence.accept(this, new HashSet()); } }