aima.core.logic.fol.parsing.ast.ConnectedSentence Maven / Gradle / Ivy
package aima.core.logic.fol.parsing.ast;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import aima.core.logic.fol.parsing.FOLVisitor;
/**
* @author Ravi Mohan
* @author Ciaran O'Reilly
*/
public class ConnectedSentence implements Sentence {
private String connector;
private Sentence first, second;
private List args = new ArrayList();
private String stringRep = null;
private int hashCode = 0;
public ConnectedSentence(String connector, Sentence first, Sentence second) {
this.connector = connector;
this.first = first;
this.second = second;
args.add(first);
args.add(second);
}
public String getConnector() {
return connector;
}
public Sentence getFirst() {
return first;
}
public Sentence getSecond() {
return second;
}
//
// START-Sentence
public String getSymbolicName() {
return getConnector();
}
public boolean isCompound() {
return true;
}
public List getArgs() {
return Collections.unmodifiableList(args);
}
public Object accept(FOLVisitor v, Object arg) {
return v.visitConnectedSentence(this, arg);
}
public ConnectedSentence copy() {
return new ConnectedSentence(connector, first.copy(), second.copy());
}
// END-Sentence
//
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if ((o == null) || (this.getClass() != o.getClass())) {
return false;
}
ConnectedSentence cs = (ConnectedSentence) o;
return cs.getConnector().equals(getConnector())
&& cs.getFirst().equals(getFirst())
&& cs.getSecond().equals(getSecond());
}
@Override
public int hashCode() {
if (0 == hashCode) {
hashCode = 17;
hashCode = 37 * hashCode + getConnector().hashCode();
hashCode = 37 * hashCode + getFirst().hashCode();
hashCode = 37 * hashCode + getSecond().hashCode();
}
return hashCode;
}
@Override
public String toString() {
if (null == stringRep) {
StringBuilder sb = new StringBuilder();
sb.append("(");
sb.append(first.toString());
sb.append(" ");
sb.append(connector);
sb.append(" ");
sb.append(second.toString());
sb.append(")");
stringRep = sb.toString();
}
return stringRep;
}
}