astra.ast.formula.PredicateFormula Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of astra-compiler Show documentation
Show all versions of astra-compiler Show documentation
Core compiler artifact for the ASTRA Language
package astra.ast.formula;
import java.util.List;
import astra.ast.core.AbstractElement;
import astra.ast.core.IElementVisitor;
import astra.ast.core.IFormula;
import astra.ast.core.ITerm;
import astra.ast.core.ParseException;
import astra.ast.core.Token;
public class PredicateFormula extends AbstractElement implements IFormula {
String predicate;
List terms;
public PredicateFormula(String predicate, List terms, Token start, Token end, String source) {
super(start, end, source);
this.predicate = predicate;
this.terms = terms;
}
public int termCount() {
return terms.size();
}
@Override
public Object accept(IElementVisitor visitor, Object data) throws ParseException {
return visitor.visit(this, data);
}
public List terms() {
return terms;
}
public String toString() {
// System.out.println(predicate+ "/ "+terms);
if (predicate.equals("true") || predicate.equals("false")) return predicate;
String out = predicate + "(";
if (terms.size() > 0) out += " ";
for (int i=0; i < terms.size(); i++) {
if (i > 0) out += ", ";
out += terms.get(i).toString();
}
if (terms.size() > 0) out += " ";
return out + ")";
}
public String predicate() {
return predicate;
}
public String toSignature() {
// System.out.println("predicate: " + predicate);
// System.out.println("terms: " + terms);
StringBuffer buf = new StringBuffer();
buf.append("formula:" + predicate);
for (int i=0; i < terms.size(); i++) {
buf.append(":" + terms.get(i).type());
}
return buf.toString();
}
}