All Downloads are FREE. Search and download functionalities are using the official Maven repository.

astra.ast.formula.PredicateFormula Maven / Gradle / Ivy

The newest version!
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();
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy