public void write(Writer writer, Environment env) throws IOException {
switch (tokenType) {
case Token.DO:
case Token.WHILE:
if (checkExpression instanceof InbuildLiteral) {
Constant literal = ((InbuildLiteral) checkExpression).getLiteral();
if (literal.getString(false).equals("true")) {
literal.dec(false);
writer.write("for(;;)");
bodyStatement.write(writer, env);
break;
}
}
if (tokenType == Token.DO) {
writer.write("do");
if (bodyStatement.isNeedLeftSeparator()) {
writer.write(" ");
}
bodyStatement.write(writer, env);
if (bodyStatement.isNeedRightSeparator()) {
writer.write(";");
}
writer.write("while(");
checkExpression.write(writer, env);
writer.write(")");
} else {
writer.write("while(");
checkExpression.write(writer, env);
writer.write(")");
bodyStatement.write(writer, env);
}
break;
default:
writer.write("for(");
if (startNode != null) {
startNode.write(writer, env);
}
writer.write(";");
if (checkExpression instanceof InbuildLiteral) {
Constant literal = ((InbuildLiteral) checkExpression).getLiteral();
if (literal.getString(false).equals("true")) {
literal.dec(false);
}
} else {
checkExpression.write(writer, env);
}