package main.nl.uva.parser.expression;
import java.util.ArrayList;
import java.util.List;
import main.nl.uva.parser.ASTNode;
import main.nl.uva.parser.Line;
import main.nl.uva.validation.type.Value;
public abstract class Expression extends ASTNode {
private final List<ExpressionChangeListener> _listener = new ArrayList<>();
public Expression(final Line lineInfo) {
super(lineInfo);
}
public boolean registerListener(final ExpressionChangeListener listener) {
return _listener.add(listener);
}
protected void notifyListenersAboutValueChange() {
for (ExpressionChangeListener listener : _listener) {
listener.onChange();
}
}
public abstract Value getValue();
}