Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
                    }
                }
            }
        }