package com.pixelmaid.dresscode.antlr.types.tree;
import com.pixelmaid.dresscode.antlr.types.VarType;
import java.util.ArrayList;
import java.util.List;
public class IfNode extends NodeEvent implements DCNode {
private List<Choice> choices;
public IfNode() {
choices = new ArrayList<Choice>();
}
public void addChoice(DCNode e, DCNode b) {
choices.add(new Choice(e, b));
}
@Override
public VarType evaluate() {
for(Choice ch : choices) {
VarType value = ch.expression.evaluate();
if(!value.isBoolean()) {
throw new RuntimeException("illegal boolean expression " +
"inside if-statement: " + ch.expression);
}
if(value.asBoolean()) {
return ch.block.evaluate();
}
}
return VarType.VOID;
}
private class Choice {
DCNode expression;
DCNode block;
Choice(DCNode e, DCNode b) {
expression = e;
block = b;
}
}
}