コード例 #1
0
ファイル: OperatorAtomic.cs プロジェクト: ggrov/tacny
 private IEnumerable<Expression> SubstVar(ExpressionTree formula, MapDisplayExpr args) {
   var varMap = new Dictionary<Expression, List<Expression>>();
   foreach (var pair in args.Elements) {
     Contract.Assert(pair.A is NameSegment, Error.MkErr(formula.TreeToExpression(), 1, "Variable"));
     foreach (var p1 in ResolveExpression(pair.A)) {
       Expression key = null;
       if (p1 is Expression)
         key = p1 as Expression;
       else if (p1 is IVariable)
         key = VariableToExpression(p1 as IVariable);
       else
         Contract.Assert(false, "Sum Tin Wong");
       Contract.Assert(key != null, Error.MkErr(formula.TreeToExpression(), 1, "Variable"));
       var tempList = ResolveExpression(pair.B).Select(p2 => p2 is IVariable ? VariableToExpression((IVariable) p2) : p2 as Expression).ToList();
       if (key != null)
         varMap.Add(key, tempList);
     }
   }
   return ReplaceVar(varMap, formula);
 }
コード例 #2
0
ファイル: Parser.cs プロジェクト: dbremner/dafny
        void MapDisplayExpr(IToken/*!*/ mapToken, bool finite, out Expression e)
        {
            Contract.Ensures(Contract.ValueAtReturn(out e) != null);
            List<ExpressionPair/*!*/>/*!*/ elements= new List<ExpressionPair/*!*/>() ;
            e = dummyExpr;

            Expect(48);
            if (StartOf(7)) {
            MapLiteralExpressions(out elements);
            }
            e = new MapDisplayExpr(mapToken, finite, elements);
            Expect(49);
        }
コード例 #3
0
ファイル: OperatorAtomic.cs プロジェクト: ggrov/tacny
    private MapType GetMapType(MapDisplayExpr mde) {
      var element = mde.Elements[0];

      if (element.A.GetType() != element.B.GetType())
        return MapType.Undefined;
      if (element.A.GetType() == typeof(StringLiteralExpr))
        return MapType.Op;
      if (element.A.GetType() == typeof(NameSegment))
        return MapType.Var;
      return MapType.Undefined;
    }
コード例 #4
0
ファイル: OperatorAtomic.cs プロジェクト: ggrov/tacny
    private IEnumerable<Expression> SubstOp(ExpressionTree formula, MapDisplayExpr args) {
      var opcodeMap = new Dictionary<BinaryExpr.Opcode, BinaryExpr.Opcode>();

      foreach (var pair in args.Elements) {
        var op1String = pair.A as LiteralExpr;
        Contract.Assert(op1String != null);
        var op2String = pair.B as LiteralExpr;
        Contract.Assert(op2String != null);
        opcodeMap.Add(StringToOp(op1String?.Value.ToString()), StringToOp(op2String?.Value.ToString()));
      }
      return ReplaceOp(opcodeMap, formula);
    }