public override YieldCmd VisitYieldCmd(YieldCmd node) { //Contract.Requires(node != null); Contract.Ensures(Contract.Result<YieldCmd>() != null); return base.VisitYieldCmd((YieldCmd)node.Clone()); }
public override YieldCmd VisitYieldCmd(YieldCmd node) { YieldCmd yieldCmd = base.VisitYieldCmd(node); absyMap[yieldCmd] = node; return yieldCmd; }
private void DesugarYield(YieldCmd yieldCmd, List<Cmd> cmds, List<Cmd> newCmds, Dictionary<Variable, Variable> ogOldGlobalMap, Dictionary<string, Variable> domainNameToInputVar, Dictionary<string, Variable> domainNameToLocalVar) { AddCallToYieldProc(yieldCmd.tok, newCmds, ogOldGlobalMap, domainNameToLocalVar); if (globalMods.Count > 0) { newCmds.Add(new HavocCmd(Token.NoToken, globalMods)); if (pc != null) { // assume pc || alpha(i, g); Expr assumeExpr = Expr.Or(Expr.Ident(pc), alpha); assumeExpr.Type = Type.Bool; newCmds.Add(new AssumeCmd(Token.NoToken, assumeExpr)); } } Dictionary<string, Expr> domainNameToExpr = ComputeAvailableExprs(AvailableLinearVars(yieldCmd), domainNameToInputVar); AddUpdatesToOldGlobalVars(newCmds, ogOldGlobalMap, domainNameToLocalVar, domainNameToExpr); for (int j = 0; j < cmds.Count; j++) { PredicateCmd predCmd = (PredicateCmd)cmds[j]; newCmds.Add(new AssumeCmd(Token.NoToken, predCmd.Expr)); } }
public virtual YieldCmd VisitYieldCmd(YieldCmd node) { Contract.Requires(node != null); Contract.Ensures(Contract.Result<YieldCmd>() != null); return node; }
public override YieldCmd VisitYieldCmd(YieldCmd node) { Contract.Ensures(Contract.Result<YieldCmd>() == node); return node; }
void LabelOrCmd(out Cmd c, out IToken label) { IToken/*!*/ x; Expr/*!*/ e; List<IToken>/*!*/ xs; List<IdentifierExpr> ids; c = dummyCmd; label = null; Cmd/*!*/ cn; QKeyValue kv = null; switch (la.kind) { case 1: { LabelOrAssign(out c, out label); break; } case 47: { Get(); x = t; while (la.kind == 28) { Attribute(ref kv); } Proposition(out e); c = new AssertCmd(x, e, kv); Expect(9); break; } case 48: { Get(); x = t; while (la.kind == 28) { Attribute(ref kv); } Proposition(out e); c = new AssumeCmd(x, e, kv); Expect(9); break; } case 49: { Get(); x = t; Idents(out xs); Expect(9); ids = new List<IdentifierExpr>(); foreach(IToken/*!*/ y in xs){ Contract.Assert(y != null); ids.Add(new IdentifierExpr(y, y.val)); } c = new HavocCmd(x,ids); break; } case 36: case 52: case 53: { CallCmd(out cn); Expect(9); c = cn; break; } case 54: { ParCallCmd(out cn); c = cn; break; } case 50: { Get(); x = t; Expect(9); c = new YieldCmd(x); break; } default: SynErr(106); break; } }
public override YieldCmd VisitYieldCmd(YieldCmd node) { if (!yieldingProcs.Contains(enclosingProc)) { yieldingProcs.Add(enclosingProc); moreProcessingRequired = true; } return base.VisitYieldCmd(node); }
private void DesugarYield(YieldCmd yieldCmd, List<Cmd> cmds, List<Cmd> newCmds, Dictionary<Variable, Variable> ogOldGlobalMap, Dictionary<string, Variable> domainNameToInputVar, Dictionary<string, Variable> domainNameToLocalVar) { AddCallToYieldProc(newCmds, ogOldGlobalMap, domainNameToLocalVar); if (globalMods.Count > 0) { newCmds.Add(new HavocCmd(Token.NoToken, globalMods)); } Dictionary<string, Expr> domainNameToExpr = ComputeAvailableExprs(AvailableLinearVars(yieldCmd), domainNameToInputVar); AddUpdatesToOldGlobalVars(newCmds, ogOldGlobalMap, domainNameToLocalVar, domainNameToExpr); for (int j = 0; j < cmds.Count; j++) { PredicateCmd predCmd = (PredicateCmd)cmds[j]; newCmds.Add(new AssumeCmd(Token.NoToken, predCmd.Expr)); } }