Esempio n. 1
0
File: Dare.cs Progetto: ggrov/tacny
        public static List <DareResult> GetTokens(SimplificationData simpData)
        {
            var removableTokenData = new List <DareResult>();

            foreach (var removableAssert in simpData.RemovableAsserts)
            {
                removableTokenData.Add(new DareResult(removableAssert.Tok, removableAssert.EndTok, "Assert Statement"));
            }
            foreach (var invariant in simpData.RemovableInvariants)
            {
                removableTokenData.Add(new DareResult(invariant.E.tok, GetExpressionLength(invariant.E) + "invariant ".Length, "Invariant"));
            }
            foreach (var removableDecrease in simpData.RemovableDecreases)
            {
                removableTokenData.Add(new DareResult(removableDecrease.tok, GetExpressionLength(removableDecrease) + "decreases ".Length, "Decreases Expression"));
            }
            foreach (var removableLemmaCall in simpData.RemovableLemmaCalls)
            {
                int nameLength;
                try {
                    nameLength = (((removableLemmaCall.Rhss[0] as ExprRhs).Expr as ApplySuffix).Lhs as NameSegment).Name.Length;
                }
                catch (Exception) {
                    Console.WriteLine("Failed to find start token of lemmaCall");
                    continue;
                }
                var startToken = new Bpl.Token(removableLemmaCall.Tok.line, removableLemmaCall.Tok.col - nameLength);
                startToken.pos = removableLemmaCall.Tok.pos - nameLength;
                removableTokenData.Add(new DareResult(startToken, removableLemmaCall.EndTok, "Lemma Call"));
            }
            foreach (var removableCalc in simpData.RemovableCalcs)
            {
                removableTokenData.Add(new DareResult(removableCalc.Tok, removableCalc.EndTok, "Calc Statement"));
            }

            // This way will return the calc statement so it can be replaced
            foreach (var calcStmt in simpData.SimplifiedCalcs.Item4)
            {
                removableTokenData.Add(new DareResult(calcStmt.Tok, calcStmt.EndTok, "Calc Statement", calcStmt));
            }

            //this way will return the lines and hints -- commented out as there are issues getting the CalcOp

//            foreach (var line in simpData.SimplifiedCalcs.Item1)
//                removableTokenData.Add(new DareResult(line.tok, GetExpressionLength(line), "Calc Line"));
//            foreach (var hint in simpData.SimplifiedCalcs.Item2)
//                removableTokenData.Add(new DareResult(hint.Tok, hint.EndTok, "CalcStmt Hint"));

            foreach (var simplifiedAssert in simpData.SimplifiedAsserts)
            {
                removableTokenData.Add(new DareResult(simplifiedAssert.Item1.Tok, simplifiedAssert.Item1.EndTok, "Assert Statement", simplifiedAssert.Item2));
            }
            foreach (var simplifiedInvariant in simpData.SimplifiedInvariants)
            {
                removableTokenData.Add(new DareResult(simplifiedInvariant.Item1.E.tok, GetExpressionLength(simplifiedInvariant.Item1.E) + "invariant ".Length, "Invariant", simplifiedInvariant.Item2));
            }
            return(removableTokenData);
        }
Esempio n. 2
0
File: Dare.cs Progetto: ggrov/tacny
        public static List<DareResult> GetTokens(SimplificationData simpData)
        {
            var removableTokenData = new List<DareResult>();

            foreach (var removableAssert in simpData.RemovableAsserts)
                removableTokenData.Add(new DareResult(removableAssert.Tok, removableAssert.EndTok, "Assert Statement"));
            foreach (var invariant in simpData.RemovableInvariants) 
                removableTokenData.Add(new DareResult(invariant.E.tok, GetExpressionLength(invariant.E) + "invariant ".Length, "Invariant"));
            foreach (var removableDecrease in simpData.RemovableDecreases)
                removableTokenData.Add(new DareResult(removableDecrease.tok, GetExpressionLength(removableDecrease) + "decreases ".Length, "Decreases Expression"));
            foreach (var removableLemmaCall in simpData.RemovableLemmaCalls) {
                int nameLength;
                try {
                    nameLength = (((removableLemmaCall.Rhss[0] as ExprRhs).Expr as ApplySuffix).Lhs as NameSegment).Name.Length;
                }
                catch (Exception) {
                    Console.WriteLine("Failed to find start token of lemmaCall");
                    continue;
                }
                var startToken = new Bpl.Token(removableLemmaCall.Tok.line, removableLemmaCall.Tok.col - nameLength);
                startToken.pos = removableLemmaCall.Tok.pos - nameLength;
                removableTokenData.Add(new DareResult(startToken, removableLemmaCall.EndTok, "Lemma Call"));
            }
            foreach (var removableCalc in simpData.RemovableCalcs)
                removableTokenData.Add(new DareResult(removableCalc.Tok, removableCalc.EndTok, "Calc Statement"));

            // This way will return the calc statement so it can be replaced
            foreach (var calcStmt in simpData.SimplifiedCalcs.Item4)
                removableTokenData.Add(new DareResult(calcStmt.Tok, calcStmt.EndTok, "Calc Statement", calcStmt));

            //this way will return the lines and hints -- commented out as there are issues getting the CalcOp

//            foreach (var line in simpData.SimplifiedCalcs.Item1)
//                removableTokenData.Add(new DareResult(line.tok, GetExpressionLength(line), "Calc Line"));
//            foreach (var hint in simpData.SimplifiedCalcs.Item2)
//                removableTokenData.Add(new DareResult(hint.Tok, hint.EndTok, "CalcStmt Hint"));

            foreach (var simplifiedAssert in simpData.SimplifiedAsserts)
                removableTokenData.Add(new DareResult(simplifiedAssert.Item1.Tok, simplifiedAssert.Item1.EndTok, "Assert Statement", simplifiedAssert.Item2));
            foreach (var simplifiedInvariant in simpData.SimplifiedInvariants)
                removableTokenData.Add(new DareResult(simplifiedInvariant.Item1.E.tok, GetExpressionLength(simplifiedInvariant.Item1.E) + "invariant ".Length, "Invariant", simplifiedInvariant.Item2));
            return removableTokenData;
        }