@Override public void caseATixeStmtAlternative(ATixeStmtAlternative node) throws AnalysisException { openScope(node.getPatternBind(), node.getPatternBind().getDefs(), node.getStatement()); node.getStatement().apply(this); // End scope for (PDefinition def : node.getPatternBind().getDefs()) { removeLocalDefFromScope(def); } }
/** * Called by the {@link ATixeStmtAlternative} node from {@link ATixeStmtAlternative#apply(IPOFAnalysis)}. * @param node the calling {@link ATixeStmtAlternative} node */ public void caseATixeStmtAlternative(ATixeStmtAlternative node) throws AnalysisException { _visitedNodes.add(node); inATixeStmtAlternative(node); if(node.getPatternBind() != null && !_visitedNodes.contains(node.getPatternBind())) { node.getPatternBind().apply(this); } if(node.getStatement() != null && !_visitedNodes.contains(node.getStatement())) { node.getStatement().apply(this); } if(node.getExp() != null && !_visitedNodes.contains(node.getExp())) { node.getExp().apply(this); } outATixeStmtAlternative(node); }
/** * Called by the {@link ATixeStmtAlternative} node from {@link ATixeStmtAlternative#apply(IAnalysis)}. * @param node the calling {@link ATixeStmtAlternative} node */ public void caseATixeStmtAlternative(ATixeStmtAlternative node) throws AnalysisException { _visitedNodes.add(node); inATixeStmtAlternative(node); if(node.getPatternBind() != null && !_visitedNodes.contains(node.getPatternBind())) { node.getPatternBind().apply(this); } if(node.getStatement() != null && !_visitedNodes.contains(node.getStatement())) { node.getStatement().apply(this); } if(node.getExp() != null && !_visitedNodes.contains(node.getExp())) { node.getExp().apply(this); } outATixeStmtAlternative(node); }
/** * Called by the {@link ATixeStmtAlternative} node from {@link ATixeStmtAlternative#apply(IAnalysis)}. * @param node the calling {@link ATixeStmtAlternative} node */ public void caseATixeStmtAlternative(ATixeStmtAlternative node, Q question) throws AnalysisException { _visitedNodes.add(node); inATixeStmtAlternative(node, question); if(node.getPatternBind() != null && !_visitedNodes.contains(node.getPatternBind())) { node.getPatternBind().apply(this, question); } if(node.getStatement() != null && !_visitedNodes.contains(node.getStatement())) { node.getStatement().apply(this, question); } if(node.getExp() != null && !_visitedNodes.contains(node.getExp())) { node.getExp().apply(this, question); } outATixeStmtAlternative(node, question); }
@Override public IProofObligationList caseATixeStmtAlternative( ATixeStmtAlternative node, IPOContextStack question) throws AnalysisException { try { IProofObligationList list = new ProofObligationList(); if (node.getPatternBind().getPattern() != null) { // Nothing to do } else if (node.getPatternBind().getBind() instanceof ATypeBind) { // Nothing to do } else if (node.getPatternBind().getBind() instanceof ASetBind) { ASetBind bind = (ASetBind) node.getPatternBind().getBind(); list.addAll(bind.getSet().apply(this.pogExpVisitor, question)); } list.addAll(node.getStatement().apply(this.pogStmVisitor, question)); return list; } catch (Exception e) { throw new POException(node, e.getMessage()); } }
/** * Called by the {@link ATixeStmtAlternative} node from {@link ATixeStmtAlternative#apply(IAnalysis)}. * @param node the calling {@link ATixeStmtAlternative} node */ public A caseATixeStmtAlternative(ATixeStmtAlternative node, Q question) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node, question); mergeReturns(retVal,inATixeStmtAlternative(node, question)); if(node.getPatternBind() != null && !_visitedNodes.contains(node.getPatternBind())) { mergeReturns(retVal,node.getPatternBind().apply(this, question)); } if(node.getStatement() != null && !_visitedNodes.contains(node.getStatement())) { mergeReturns(retVal,node.getStatement().apply(this, question)); } if(node.getExp() != null && !_visitedNodes.contains(node.getExp())) { mergeReturns(retVal,node.getExp().apply(this, question)); } mergeReturns(retVal,outATixeStmtAlternative(node, question)); return retVal; }
/** * Called by the {@link ATixeStmtAlternative} node from {@link ATixeStmtAlternative#apply(IAnalysis)}. * @param node the calling {@link ATixeStmtAlternative} node */ public A caseATixeStmtAlternative(ATixeStmtAlternative node) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node); mergeReturns(retVal,inATixeStmtAlternative(node)); if(node.getPatternBind() != null && !_visitedNodes.contains(node.getPatternBind())) { mergeReturns(retVal,node.getPatternBind().apply(this)); } if(node.getStatement() != null && !_visitedNodes.contains(node.getStatement())) { mergeReturns(retVal,node.getStatement().apply(this)); } if(node.getExp() != null && !_visitedNodes.contains(node.getExp())) { mergeReturns(retVal,node.getExp().apply(this)); } mergeReturns(retVal,outATixeStmtAlternative(node)); return retVal; }
if (alt.getPatternBind().getBind() instanceof ASetBind) ASetBind bind = (ASetBind) alt.getPatternBind().getBind(); obligations.addAll(bind.getSet().apply(rootVisitor, question)); obligations.add(new SetMembershipObligation(bind.getPattern(), bind.getSet(), question, aF)); else if (alt.getPatternBind().getBind() instanceof ASeqBind) ASeqBind bind = (ASeqBind) alt.getPatternBind().getBind(); obligations.addAll(bind.getSeq().apply(rootVisitor, question)); obligations.add(new SeqMembershipObligation(bind.getPattern(), bind.getSeq(), question, aF));
if (node.getPatternBind().getPattern() != null) evalContext.putList(ctxt.assistantFactory.createPPatternAssistant().getNamedValues(node.getPatternBind().getPattern(), exval, ctxt)); else if (node.getPatternBind().getBind() instanceof ASetBind) ASetBind setbind = (ASetBind) node.getPatternBind().getBind(); ValueSet set = setbind.getSet().apply(VdmRuntime.getStatementEvaluator(), ctxt).setValue(ctxt); else if (node.getPatternBind().getBind() instanceof ASeqBind) ASeqBind seqbind = (ASeqBind) node.getPatternBind().getBind(); ValueList seq = seqbind.getSeq().apply(VdmRuntime.getStatementEvaluator(), ctxt).seqValue(ctxt); ATypeBind typebind = (ATypeBind) node.getPatternBind().getBind();
node.getPatternBind().apply(THIS, new TypeCheckInfo(question.assistantFactory, question.env, question.scope)); List<PDefinition> defs = getDefinitions(node.getPatternBind()); question.assistantFactory.createPDefinitionListAssistant().typeCheck(defs, THIS, question); Environment local = new FlatCheckedEnvironment(question.assistantFactory, defs, question.env, question.scope);