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); }
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; }