package net.jangaroo.jooc.ast;
import net.jangaroo.jooc.CodeGenerator;
import net.jangaroo.jooc.JooSymbol;
import net.jangaroo.jooc.Scope;
import java.util.ArrayList;
import java.util.List;
public abstract class AbstractBlock extends Statement {
private JooSymbol lBrace;
private List<Directive> directives;
private JooSymbol rBrace;
private List<CodeGenerator> blockStartCodeGenerators = new ArrayList<CodeGenerator>(3);
public AbstractBlock(JooSymbol rBrace, List<Directive> directives, JooSymbol lBrace) {
this.rBrace = rBrace;
this.directives = directives;
this.lBrace = lBrace;
}
@Override
public List<? extends AstNode> getChildren() {
return makeChildren(super.getChildren(), directives);
}
@Override
public void scope(final Scope scope) {
scope(getDirectives(), scope);
}
public void addBlockStartCodeGenerator(CodeGenerator blockStartCodeGenerator) {
getBlockStartCodeGenerators().add(blockStartCodeGenerator);
}
public void analyze(AstNode parentNode) {
super.analyze(parentNode);
analyze(this, getDirectives());
}
public JooSymbol getSymbol() {
return getRBrace();
}
public JooSymbol getLBrace() {
return lBrace;
}
public List<Directive> getDirectives() {
return directives;
}
public JooSymbol getRBrace() {
return rBrace;
}
public List<CodeGenerator> getBlockStartCodeGenerators() {
return blockStartCodeGenerators;
}
}