Ejemplo n.º 1
0
        private Expression GetMapExpression(string mapKey)
        {
            string  program = "namespace Test { public class A { public void Method() { result = " + mapKey + "; } }}";
            IParser parser  = ParserFactory.CreateParser(SupportedLanguage.CSharp, new StringReader(program));

            parser.ParseMethodBodies = true;
            parser.Parse();

            CompilationUnit cu = parser.CompilationUnit;

            ParentVisitor parentVisitor = new ParentVisitor();

            parentVisitor.VisitCompilationUnit(cu, null);

            TypeReferenceCorrector typeReferenceCorrector = new TypeReferenceCorrector();

            typeReferenceCorrector.VisitCompilationUnit(cu, null);

            MappingIdentifierMarker mappingIdentifierMarker = new MappingIdentifierMarker();

            mappingIdentifierMarker.MarkIdentifiers(cu);

            NamespaceDeclaration ns  = (NamespaceDeclaration)cu.Children[0];
            TypeDeclaration      ty  = (TypeDeclaration)ns.Children[0];
            MethodDeclaration    md  = (MethodDeclaration)ty.Children[0];
            ExpressionStatement  st  = (ExpressionStatement)md.Body.Children[0];
            AssignmentExpression ase = (AssignmentExpression)st.Expression;

            return(ase);
        }
Ejemplo n.º 2
0
        private void ParseAndPreVisit()
        {
            foreach (Source entry in Sources.Values)
            {
                if (!entry.CodeFile)
                {
                    continue;
                }
                progress.Increment("Parsing");

                string       convetedCode = ConvertFile(entry.Code);
                StringReader reader       = new StringReader(convetedCode);

                IParser parser = ParserFactory.CreateParser(GetLanguage(), reader);
                parser.ParseMethodBodies = true;
                parser.Parse();
                CompilationUnit compilationUnit = parser.CompilationUnit;
                compilationUnit.Parent = new TypeReference(entry.File);

                parentVisitor.VisitCompilationUnit(compilationUnit, null);
                typesVisitor.VisitCompilationUnit(compilationUnit, null);
                projectTypeReferenceCorrector.VisitCompilationUnit(compilationUnit, null);
                if (Stubs.Contains(entry.File))
                {
                    StubTransformer st = new StubTransformer();

                    st.Members = (string)Stubs[entry.File];
                    st.VisitCompilationUnit(compilationUnit, null);
                }
                if (MembersExcludes.Contains(entry.File))
                {
                    string members = MembersExcludes[entry.File].ToString();
                    MemberExcludeTransformer met = new MemberExcludeTransformer(members);
                    met.VisitCompilationUnit(compilationUnit, null);
                    if (met.ExcludedType != null && met.ExcludedMembers != null)
                    {
                        baseTypeToExcludeMethod[met.ExcludedType] = met.ExcludedMembers;
                    }
                }
                entry.CompilationUnit = compilationUnit;
                entry.Parser          = parser;
            }
        }
Ejemplo n.º 3
0
        private Expression GetMapExpression(string mapKey)
        {
            string program = "namespace Test { public class A { public void Method() { result = " + mapKey + "; } }}";
            IParser parser = ParserFactory.CreateParser(SupportedLanguage.CSharp, new StringReader(program));
            parser.ParseMethodBodies = true;
            parser.Parse();

            CompilationUnit cu = parser.CompilationUnit;

            ParentVisitor parentVisitor = new ParentVisitor();
            parentVisitor.VisitCompilationUnit(cu, null);

            TypeReferenceCorrector typeReferenceCorrector = new TypeReferenceCorrector();
            typeReferenceCorrector.VisitCompilationUnit(cu, null);

            MappingIdentifierMarker mappingIdentifierMarker = new MappingIdentifierMarker();
            mappingIdentifierMarker.MarkIdentifiers(cu);

            NamespaceDeclaration ns = (NamespaceDeclaration) cu.Children[0];
            TypeDeclaration ty = (TypeDeclaration) ns.Children[0];
            MethodDeclaration md = (MethodDeclaration) ty.Children[0];
            ExpressionStatement st = (ExpressionStatement) md.Body.Children[0];
            AssignmentExpression ase = (AssignmentExpression) st.Expression;
            return ase;
        }