public static MainScope BuildMainScope(MethodDefinition methodDefinition) { var mainScope = new MainScope(); var instructionCursor = methodDefinition.Body.Instructions.First(); while (instructionCursor != null) { if (IsNewObjectInitializerScope(instructionCursor)) { mainScope.Instructions.Add(instructionCursor); var objectInitializerScope = BuildObjectInitializer(instructionCursor, methodDefinition); mainScope.ObjectInitializerScopes.Add(objectInitializerScope); var endOffset = objectInitializerScope.GetEndOffset(); instructionCursor = JumpToInstructionAfterOffset(methodDefinition, endOffset); } else { mainScope.Instructions.Add(instructionCursor); instructionCursor = instructionCursor.Next; } } ReorderInstructions(mainScope.Instructions); return(mainScope); }
private void ParseMainScope(MainScope mainScope, MethodDefinition methodDefinition, List <Triple> triples) { foreach (var instruction in mainScope.Instructions) { ValidateInstruction(instruction); if (IsToTrigger(instruction)) { try { ParseInstruction(instruction, methodDefinition, triples); } catch (ILParseException ex) { _logOutput.LogAnalysis("ERROR " + ex.Message); } } } }