package warnings;
import java.util.HashSet;
public class PrologRuleRelAtom extends PrologRuleAtom {
Term term1;
Term term2;
Relation rel;
boolean isArithmetic;
public PrologRuleRelAtom(Term term1, Term term2, Relation rel,boolean isArithmetic) {
this.type=PrologRuleAtomType.rel;
this.term1=term1;
this.term2=term2;
this.rel=rel;
this.isArithmetic=isArithmetic;
}
@Override
public HashSet<String> getVariables() {
HashSet<String> variables = term1.fetchVariables();
variables.addAll(term2.fetchVariables());
return variables;
}
@Override
public String toString() {
return term1.toString()
+ " "
+ (isArithmetic ? translateRelationToCLPFD(rel)
: translateRelationToProlog(rel)) + " "
+ term2.toString();
}
private static String translateRelationToCLPFD(Relation rel) {
switch (rel) {
case eqrel:
return "#=";
case eqasgn:
return "#=";
case greater:
return "#>";
case less:
return "#<";
case lesseq:
return "#=<";
case greatereq:
return "#>=";
case noteq:
return "#\\=";
default:
return null;
}
}
private static String translateRelationToProlog(Relation rel) {
switch (rel) {
case eqrel:
return "==";
case eqasgn:
return "=";
case greater:
return "@>";
case less:
return "@<";
case lesseq:
return "@=<";
case greatereq:
return "@>=";
case noteq:
return "\\==";
default:
return null;
}
}
}