CommonFloatingConstantNode.java
package edu.udel.cis.vsl.abc.ast.node.common.expression;
import java.io.PrintStream;
import edu.udel.cis.vsl.abc.ast.node.IF.expression.FloatingConstantNode;
import edu.udel.cis.vsl.abc.ast.value.IF.RealFloatingValue;
import edu.udel.cis.vsl.abc.token.IF.Source;
public class CommonFloatingConstantNode extends CommonConstantNode implements
FloatingConstantNode {
private String wholePart;
private String fractionPart;
private String exponent;
public CommonFloatingConstantNode(Source source, String representation,
String wholePart, String fractionPart, String exponent,
RealFloatingValue value) {
super(source, representation, value.getType());
this.wholePart = wholePart;
this.fractionPart = fractionPart;
this.exponent = exponent;
setConstantValue(value);
}
@Override
public RealFloatingValue getConstantValue() {
return (RealFloatingValue) super.getConstantValue();
}
@Override
protected void printBody(PrintStream out) {
out.print(toString());
}
@Override
public String toString() {
return "FloatingConstantNode[radix=" + getConstantValue().getRadix()
+ ", significand=" + wholePart + "." + fractionPart
+ ", exponent=" + exponent + ", doubleValue="
+ getConstantValue().getDoubleValue() + "]";
}
@Override
public String wholePart() {
return wholePart;
}
@Override
public String fractionPart() {
return fractionPart;
}
@Override
public String exponent() {
return exponent;
}
@Override
public FloatingConstantNode copy() {
return new CommonFloatingConstantNode(getSource(),
getStringRepresentation(), wholePart(), fractionPart(),
exponent(), getConstantValue());
}
@Override
public ConstantKind constantKind() {
return ConstantKind.FLOAT;
}
}