CommonRealLiteralExpression.java
/**
*
*/
package dev.civl.mc.model.common.expression;
import java.math.BigDecimal;
import java.util.Set;
import dev.civl.mc.model.IF.CIVLSource;
import dev.civl.mc.model.IF.Scope;
import dev.civl.mc.model.IF.expression.Expression;
import dev.civl.mc.model.IF.expression.RealLiteralExpression;
import dev.civl.mc.model.IF.type.CIVLPrimitiveType;
import dev.civl.mc.model.IF.type.CIVLType;
import dev.civl.mc.model.IF.variable.Variable;
import dev.civl.sarl.IF.SymbolicUniverse;
import dev.civl.sarl.IF.expr.SymbolicExpression;
/**
* A real literal.
*
* @author Timothy K. Zirkel (zirkel)
*
*/
public class CommonRealLiteralExpression extends CommonExpression implements
RealLiteralExpression {
private BigDecimal value;
/**
* A real literal.
*
* @param value
* The (arbitrary precision) real value.
*/
public CommonRealLiteralExpression(CIVLSource source, CIVLType type,
BigDecimal value) {
super(source, null, null, type);
this.value = value;
}
/**
* @return The (arbitrary precision) real value.
*/
public BigDecimal value() {
return value;
}
/**
* @param value
* The (arbitrary precision) real value.
*/
public void setValue(BigDecimal value) {
this.value = value;
}
@Override
public String toString() {
return value.toString();
}
@Override
public ExpressionKind expressionKind() {
return ExpressionKind.REAL_LITERAL;
}
@Override
public CIVLPrimitiveType getExpressionType() {
return (CIVLPrimitiveType) super.getExpressionType();
}
@Override
public Set<Variable> variableAddressedOf(Scope scope) {
return null;
}
@Override
public Set<Variable> variableAddressedOf() {
return null;
}
@Override
public LiteralKind literalKind() {
return LiteralKind.REAL;
}
@Override
public void calculateConstantValueWork(SymbolicUniverse universe) {
this.constantValue = universe.number(universe.numberObject(universe
.numberFactory().rational(value.toPlainString())));
}
@Override
public void setLiteralConstantValue(SymbolicExpression value) {
this.constantValue = value;
}
@Override
protected boolean expressionEquals(Expression expression) {
return this.value == ((RealLiteralExpression) expression).value();
}
@Override
protected void addFreeVariables(Set<Variable> result) {
}
}