Newer
Older
DesignCraft / src / main / java / ast / ForStatement.java
package ast;

import java.util.ArrayList;
import java.util.List;

public class ForStatement extends Statement {

    private List<Statement> initializers = new ArrayList<>();
    private Expression optionalConditionExpression;
    private List<Statement> updaters = new ArrayList<>();
    private Statement body;

    public List<Statement> getInitializers() {
        return initializers;
    }

    public void setInitializers(List<Statement> initializers) {
        this.initializers = initializers;
    }

    public Expression getExpression() {
        return optionalConditionExpression;
    }

    public void setExpression(Expression expression) {
        this.optionalConditionExpression = expression;
    }

    public List<Statement> getUpdaters() {
        return updaters;
    }

    public void setUpdaters(List<Statement> updaters) {
        this.updaters = updaters;
    }

    public Statement getBody() {
        return body;
    }

    public void setBody(Statement body) {
        this.body = body;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("for (");

        for (int i = 0; i < initializers.size(); i++) {
            String init = initializers.get(i).toString();
            sb.append(init.endsWith(";") ? init.substring(0, init.length() - 1) : init);
            if (i < initializers.size() - 1) sb.append(", ");
        }
        sb.append("; ");

        if (optionalConditionExpression != null) sb.append(optionalConditionExpression);
        sb.append("; ");

        for (int i = 0; i < updaters.size(); i++) {
            String update = updaters.get(i).toString();
            sb.append(update.endsWith(";") ? update.substring(0, update.length() - 1) : update);
            if (i < updaters.size() - 1) sb.append(", ");
        }
        sb.append(") ");

        if (body != null) sb.append(body);
        return sb.toString();
    }
}