50 lines
1.9 KiB
Java
50 lines
1.9 KiB
Java
/**
|
|
* Returns <code>true</code> if the given expression represents constant value.
|
|
* This value can be a boolean or integer.
|
|
* @param e the expression to test
|
|
* @return <code>true</code> if the given expression represents constant value
|
|
*/
|
|
private boolean isConstant(Expression e) {
|
|
if(e instanceof IntegerExpression)
|
|
return true;
|
|
if(e instanceof VnameExpression) {
|
|
VnameExpression vname = (VnameExpression)e;
|
|
if(vname.V instanceof SimpleVname)
|
|
if(((SimpleVname)vname.V).I.spelling.equals(StdEnvironment.trueDecl.I.spelling)
|
|
|| ((SimpleVname)vname.V).I.spelling.equals(StdEnvironment.falseDecl.I.spelling))
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Returns the boolean value of the given expression that represents a boolean value.
|
|
* @param e a boolean value
|
|
* @return the boolean value of the given expression that represents a boolean value
|
|
*/
|
|
private boolean parseBoolean(Expression e) {
|
|
if(e instanceof VnameExpression) {
|
|
VnameExpression vname = (VnameExpression)e;
|
|
if(vname.V instanceof SimpleVname)
|
|
if(((SimpleVname)vname.V).I.spelling.equals(StdEnvironment.trueDecl.I.spelling))
|
|
return true;
|
|
if(((SimpleVname)vname.V).I.spelling.equals(StdEnvironment.falseDecl.I.spelling))
|
|
return false;
|
|
}
|
|
throw new RuntimeException();
|
|
}
|
|
|
|
/**
|
|
* Returns an expression representing the given boolean value.
|
|
* @param val the boolean value that will be represented by the returned expression
|
|
* @return an expression representing the given boolean value
|
|
*/
|
|
private Expression createBoolean(boolean val) {
|
|
Identifier iAST = new Identifier(val ? "true" : "false", new SourcePosition());
|
|
iAST.decl = val ? StdEnvironment.trueDecl : StdEnvironment.falseDecl;
|
|
SimpleVname vAST = new SimpleVname(iAST, new SourcePosition());
|
|
vAST.type = StdEnvironment.booleanType;
|
|
VnameExpression boolExpression = new VnameExpression(vAST, new SourcePosition());
|
|
return boolExpression;
|
|
}
|