@Override public LexNameSet caseAIfStm(AIfStm node, FreeVarInfo info) throws AnalysisException { return node.getIfExp().apply(this, info); }
public static String getIfString(AIfStm node) { StringBuilder sb = new StringBuilder(); sb.append("if " + node.getIfExp() + "\nthen\n" + node.getThenStm()); for (AElseIfStm s : node.getElseIf()) { sb.append(s.toString()); } if (node.getElseStm() != null) { sb.append("else\n"); sb.append(node.getElseStm().toString()); } return sb.toString(); }
@Override public Value caseAIfStm(AIfStm node, Context ctxt) throws AnalysisException { return evalIf(node, node.getLocation(), node.getIfExp(), node.getThenStm(), node.getElseIf(), node.getElseStm(), ctxt); }
@Override public PType caseAIfStm(AIfStm node, TypeCheckInfo question) throws AnalysisException { node.setType(typeCheckIf(node.getLocation(), node.getIfExp(), node.getThenStm(), node.getElseIf(), node.getElseStm(), question));//rtypes.getType(node.getLocation())); return node.getType(); }
@Override public IProofObligationList caseAIfStm(AIfStm node, IPOContextStack question) throws AnalysisException { try { IProofObligationList obligations = node.getIfExp().apply(rootVisitor, question); obligations.addAll(node.getThenStm().apply(mainVisitor, question)); for (AElseIfStm stmt : node.getElseIf()) { obligations.addAll(stmt.apply(mainVisitor, question)); } if (node.getElseStm() != null) { obligations.addAll(node.getElseStm().apply(mainVisitor, question)); } return obligations; } catch (Exception e) { throw new POException(node, e.getMessage()); } }
@Override public SStmIR caseAIfStm(AIfStm node, IRInfo question) throws AnalysisException { SExpIR ifExp = node.getIfExp().apply(question.getExpVisitor(), question); SStmIR thenStm = node.getThenStm().apply(question.getStmVisitor(), question); AIfStmIR ifStm = new AIfStmIR(); ifStm.setIfExp(ifExp); ifStm.setThenStm(thenStm); LinkedList<AElseIfStm> elseIfs = node.getElseIf(); for (AElseIfStm stm : elseIfs) { ifExp = stm.getElseIf().apply(question.getExpVisitor(), question); thenStm = stm.getThenStm().apply(question.getStmVisitor(), question); AElseIfStmIR elseIfStm = new AElseIfStmIR(); elseIfStm.setElseIf(ifExp); elseIfStm.setThenStm(thenStm); ifStm.getElseIf().add(elseIfStm); } if (node.getElseStm() != null) { SStmIR elseStm = node.getElseStm().apply(question.getStmVisitor(), question); ifStm.setElseStm(elseStm); } return ifStm; }