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();
}
}