/** * Called by the {@link AElseIfStm} node from {@link AElseIfStm#apply(IAnalysis)}. * @param node the calling {@link AElseIfStm} node */ public void caseAElseIfStm(AElseIfStm node) throws AnalysisException { _visitedNodes.add(node); inAElseIfStm(node); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this); } if(node.getElseIf() != null && !_visitedNodes.contains(node.getElseIf())) { node.getElseIf().apply(this); } if(node.getThenStm() != null && !_visitedNodes.contains(node.getThenStm())) { node.getThenStm().apply(this); } outAElseIfStm(node); }
@Override public PType caseAElseIfStm(AElseIfStm node, TypeCheckInfo question) throws AnalysisException { node.setType(typeCheckAElseIf(node, node.getLocation(), node.getElseIf(), node.getThenStm(), question)); return node.getType(); }
public static AElseIfStm newAElseIfStm(ILexLocation token, PExp elseIfExp, PStm thenStmt) { AElseIfStm result = new AElseIfStm(); initStatement(result, token); result.setElseIf(elseIfExp); result.setThenStm(thenStmt); return result; }
/** * Returns a deep clone of this {@link AElseIfStm} node. * @return a deep clone of this {@link AElseIfStm} node */ public AElseIfStm clone() { return new AElseIfStm( _location, _type, cloneNode(_elseIf), cloneNode(_thenStm) ); }
@Override public Value caseAElseIfStm(AElseIfStm node, Context ctxt) throws AnalysisException { return evalElseIf(node, node.getLocation(), node.getElseIf(), node.getThenStm(), ctxt); }
@Override public IProofObligationList caseAElseIfStm(AElseIfStm node, IPOContextStack question) throws AnalysisException { try { IProofObligationList obligations = node.getElseIf().apply(rootVisitor, question); obligations.addAll(node.getThenStm().apply(mainVisitor, question)); return obligations; } catch (Exception e) { throw new POException(node, e.getMessage()); } }
@Override public PExp caseAIfStm(AIfStm stm, Integer lineno) throws AnalysisException { PExp found = stm.getThenStm().apply(THIS, lineno); if (found != null) { return found; } for (AElseIfStm stmt : stm.getElseIf()) { found = stmt.apply(THIS, lineno); if (found != null) { return found; } } if (stm.getElseStm() != null) { found = stm.getElseStm().apply(THIS, lineno); } return found; }
@Override public PTypeSet caseAElseIfStm(AElseIfStm statement) throws AnalysisException { return statement.getThenStm().apply(THIS); }
@Override public PExp caseAElseIfStm(AElseIfStm stm, Integer lineno) throws AnalysisException { return af.createPExpAssistant().findExpression(stm.getElseIf(), lineno); }
@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; }
e.apply(this);
@Override public PStm caseAElseIfStm(AElseIfStm stm, Integer lineno) throws AnalysisException { PStm found = findStatementBaseCase(stm, lineno); if (found != null) { return found; } return stm.getThenStm().apply(THIS, lineno);// PStmAssistantInterpreter.findStatement(stm.getThenStm(), lineno); }
/** * Creates a deep clone of this {@link AElseIfStm} node while putting all * old node-new node relations in the map {@code oldToNewMap}. * @param oldToNewMap the map filled with the old node-new node relation * @return a deep clone of this {@link AElseIfStm} node */ public AElseIfStm clone(Map<INode,INode> oldToNewMap) { AElseIfStm node = new AElseIfStm( _location, _type, cloneNode(_elseIf, oldToNewMap), cloneNode(_thenStm, oldToNewMap) ); oldToNewMap.put(this, node); return node; }
/** * Called by the {@link AElseIfStm} node from {@link AElseIfStm#apply(IAnalysis)}. * @param node the calling {@link AElseIfStm} node */ public void caseAElseIfStm(AElseIfStm node, Q question) throws AnalysisException { _visitedNodes.add(node); inAElseIfStm(node, question); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this, question); } if(node.getElseIf() != null && !_visitedNodes.contains(node.getElseIf())) { node.getElseIf().apply(this, question); } if(node.getThenStm() != null && !_visitedNodes.contains(node.getThenStm())) { node.getThenStm().apply(this, question); } outAElseIfStm(node, question); }
e.apply(this, question);
/** * Called by the {@link AElseIfStm} node from {@link AElseIfStm#apply(IPOFAnalysis)}. * @param node the calling {@link AElseIfStm} node */ public void caseAElseIfStm(AElseIfStm node) throws AnalysisException { _visitedNodes.add(node); inAElseIfStm(node); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this); } if(node.getElseIf() != null && !_visitedNodes.contains(node.getElseIf())) { node.getElseIf().apply(this); } if(node.getThenStm() != null && !_visitedNodes.contains(node.getThenStm())) { node.getThenStm().apply(this); } outAElseIfStm(node); }
e.apply(this);
/** * Called by the {@link AElseIfStm} node from {@link AElseIfStm#apply(IAnalysis)}. * @param node the calling {@link AElseIfStm} node */ public A caseAElseIfStm(AElseIfStm node) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node); mergeReturns(retVal,inAElseIfStm(node)); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { mergeReturns(retVal,node.getType().apply(this)); } if(node.getElseIf() != null && !_visitedNodes.contains(node.getElseIf())) { mergeReturns(retVal,node.getElseIf().apply(this)); } if(node.getThenStm() != null && !_visitedNodes.contains(node.getThenStm())) { mergeReturns(retVal,node.getThenStm().apply(this)); } mergeReturns(retVal,outAElseIfStm(node)); return retVal; }
@Override public PStm caseAIfStm(AIfStm stm, Integer lineno) throws AnalysisException { PStm found = findStatementBaseCase(stm, lineno); if (found != null) { return found; } found = stm.getThenStm().apply(THIS, lineno);// PStmAssistantInterpreter.findStatement(stm.getThenStm(), // lineno); if (found != null) { return found; } for (AElseIfStm stmt : stm.getElseIf()) { found = stmt.apply(THIS, lineno);// af.createPStmAssistant().findStatement(stmt, lineno); if (found != null) { return found; } } if (stm.getElseStm() != null) { found = stm.getElseStm().apply(THIS, lineno);// PStmAssistantInterpreter.findStatement(stm.getElseStm(), // lineno); } return found; }
/** * Called by the {@link AElseIfStm} node from {@link AElseIfStm#apply(IAnalysis)}. * @param node the calling {@link AElseIfStm} node */ public A caseAElseIfStm(AElseIfStm node, Q question) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node, question); mergeReturns(retVal,inAElseIfStm(node, question)); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { mergeReturns(retVal,node.getType().apply(this, question)); } if(node.getElseIf() != null && !_visitedNodes.contains(node.getElseIf())) { mergeReturns(retVal,node.getElseIf().apply(this, question)); } if(node.getThenStm() != null && !_visitedNodes.contains(node.getThenStm())) { mergeReturns(retVal,node.getThenStm().apply(this, question)); } mergeReturns(retVal,outAElseIfStm(node, question)); return retVal; }