package synthesijer.ast.statement; import java.util.ArrayList; import synthesijer.ast.Expr; import synthesijer.ast.Scope; import synthesijer.ast.Statement; import synthesijer.ast.SynthesijerAstTree; import synthesijer.ast.SynthesijerAstVisitor; public class SwitchStatement extends Statement{ private Expr selector; private ArrayList<Elem> elements = new ArrayList<>(); private final Elem defaultElem = new Elem(null); public SwitchStatement(Scope scope){ super(scope); } public void setSelector(Expr expr){ selector = expr; } public Expr getSelector(){ return selector; } public Elem newElement(Expr pat){ Elem elem = new Elem(pat); elements.add(elem); return elem; } public Elem getDefaultElement(){ return defaultElem; } public ArrayList<Elem> getElements(){ return elements; } public void accept(SynthesijerAstVisitor v){ v.visitSwitchStatement(this); } public class Elem implements SynthesijerAstTree{ private final Expr pat; private ArrayList<Statement> statements = new ArrayList<>(); private Elem(Expr pat){ this.pat = pat; } public void addStatement(Statement s){ statements.add(s); } public ArrayList<Statement> getStatements(){ return statements; } public void replaceStatements(ArrayList<Statement> newList){ statements = newList; //System.out.println("--- replace ---"); //for(Statement s: statements){ System.out.println(s);} //System.out.println("---------------"); } public Expr getPattern(){ return pat; } public void accept(SynthesijerAstVisitor v){ v.visitSwitchCaseElement(this); } } }