package com.form.language.ast.expression; import com.form.language.ast.ASTNode; import com.form.language.ast.expression.variable.ReferenceCollection; import com.form.language.ast.type.ErrorType; import com.form.language.ast.type.Type; import com.form.language.ast.values.GenericValue; import com.form.language.issue.QLToken; import com.form.language.memory.Context; public abstract class Expression extends ASTNode { public abstract GenericValue evaluate(Context context); public abstract void collectIds(ReferenceCollection referenceCollection); protected Expression(QLToken tokenInfo) { super(tokenInfo); } public boolean isCorrectlyTyped(Context context) { return !this.getType(context).equals(new ErrorType()); } public abstract Type getType(Context context); }