package org.fugazi.ql.ast.expression;
import org.fugazi.ql.ast.AbstractASTNode;
import org.fugazi.ql.ast.form.form_data.QLFormDataStorage;
import org.fugazi.ql.ast.type.BoolType;
import org.fugazi.ql.ast.type.IntType;
import org.fugazi.ql.ast.type.StringType;
import org.fugazi.ql.ast.type.Type;
public abstract class Expression extends AbstractASTNode {
public Expression() {
super();
}
public abstract String toString();
public abstract Type getReturnedType(QLFormDataStorage _formData);
public abstract <T> T accept(IExpressionVisitor<T> visitor);
public boolean isExpressionOfTypeBool(QLFormDataStorage _formData) {
return this.isExpressionOfType(_formData, new BoolType());
}
public boolean isExpressionOfTypeInt(QLFormDataStorage _formData) {
return this.isExpressionOfType(_formData, new IntType());
}
public boolean isExpressionOfTypeString(QLFormDataStorage _formData) {
return this.isExpressionOfType(_formData, new StringType());
}
public boolean isExpressionOfType(QLFormDataStorage _formData, Type type) {
return this.getReturnedType(_formData).equals(type);
}
}