package models.algebra; import java.util.ArrayList; public class Constant extends Term { public Constant(String value) { super(new Symbol(value, 0), new ArrayList<Expression>()); } public Constant(String value, Type type) { super(new Symbol((type == null ? value: type.valueToRepresentation(value)), 0), new ArrayList<Expression>()); symbol.setSignature(new Type[] {type}); } public Constant(Symbol symbol) { super(symbol); } @Override public boolean equals(Object another) { if (!(another instanceof Constant)) return false; return symbol.equals(((Constant) another).symbol); } @Override public Object clone() { Constant c = new Constant(symbol); c.setType(type); return c; } public String toString() { return symbol.getName(); } public Object getValue() { if (getType() != null) { return getType().representationToValue(symbol.getName()); } return symbol.getName(); } public String toImplementation(String[] sideEffects) { if (symbol.isImplGenerative()) { String exp = symbol.generate(getType(), new Type[] {}, new String[] {}, new String[] {}, sideEffects); return exp; } return symbol.getImplName(); } }