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