package aima.core.logic.propositional.parsing; import aima.core.logic.propositional.parsing.ast.ComplexSentence; import aima.core.logic.propositional.parsing.ast.Sentence; import aima.core.logic.propositional.parsing.ast.PropositionSymbol; /** * Abstract implementation of the PLVisitor interface that provides default * behavior for each of the methods. * * @author Ravi Mohan * @author Ciaran O'Reilly * * @param <A> * the argument type to be passed to the visitor methods. */ public abstract class AbstractPLVisitor<A> implements PLVisitor<A, Sentence> { @Override public Sentence visitPropositionSymbol(PropositionSymbol s, A arg) { // default behavior is to treat propositional symbols as atomic // and leave unchanged. return s; } @Override public Sentence visitUnarySentence(ComplexSentence s, A arg) { // a new Complex Sentence with the same connective but possibly // with its simpler sentence replaced by the visitor. return new ComplexSentence(s.getConnective(), s.getSimplerSentence(0) .accept(this, arg)); } @Override public Sentence visitBinarySentence(ComplexSentence s, A arg) { // a new Complex Sentence with the same connective but possibly // with its simpler sentences replaced by the visitor. return new ComplexSentence(s.getConnective(), s.getSimplerSentence(0) .accept(this, arg), s.getSimplerSentence(1).accept(this, arg)); } }