Newer
Older
AlgebraicDataflowArchitectureModel / AlgebraicDataflowArchitectureModel / src / code / ast / Block.java
package code.ast;

import java.util.List;
import java.util.ArrayList;
import java.util.stream.Collectors;

public class Block extends Statement {
	private List<Statement> statements = new ArrayList<Statement>();

	public List<Statement> getStatements2() {
		return statements;
	}

	public void setStatements(List<Statement> statements) {
		this.statements = statements;
	}
	
	public void addFirstStatement(Statement statement) {
		statements.add(0, statement);
	}

	public void addStatement(Statement statement) {
		statements.add(statement);
	}

	public void addFirstStatements(List<Statement> statements) {
		this.statements.addAll(0, statements);
	}

	public void addStatements(List<Statement> statements) {
		this.statements.addAll(statements);
	}

	//====================================================
	//TODO: CodeGenerator修正後削除

	public List<String> getStatements() {
		List<String> strings = new ArrayList<>();
		for (Statement stmt : statements) {
			if (stmt != null) {
				strings.add(stmt.toString());
			}
		}
		return strings;
	}

	public void addFirstStatement(String code) {
		if (code != null) {
			this.addFirstStatement(new Statement() {
				@Override
				public String toString() {
					return code;
				}
			}.toString());
		}
	}

	public void addStatement(String code) {
		if (code != null) {
			this.addStatement(new PlainStatement(code));
		}
	}

	//====================================================


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

		for (Statement statement : statements) {
			if (statement != null) {
				String content = statement.toString();

				// split statement
				String[] lines = content.split("\n");

				// Tab
				for (String line : lines) {
					sb.append("\t").append(line).append("\n");
				}
			}
		}

		sb.append("}");
		return sb.toString();
	}
}