public static ParseCoordinator Create(IVBE vbe, RubberduckParserState state, IAttributeParser attributeParser, IModuleExporter exporter, string serializedDeclarationsPath = null) { var path = serializedDeclarationsPath ?? Path.Combine(Path.GetDirectoryName(Assembly.GetAssembly(typeof(MockParser)).Location), "TestFiles", "Resolver"); Func <IVBAPreprocessor> preprocessorFactory = () => new VBAPreprocessor(double.Parse(vbe.Version, CultureInfo.InvariantCulture)); var projectManager = new SynchronousProjectManager(state, vbe); var moduleToModuleReferenceManager = new ModuleToModuleReferenceManager(); var supertypeClearer = new SynchronousSupertypeClearer(state); var parserStateManager = new SynchronousParserStateManager(state); var referenceRemover = new SynchronousReferenceRemover(state, moduleToModuleReferenceManager); var comSynchronizer = new SynchronousCOMReferenceSynchronizer( state, parserStateManager, path); var builtInDeclarationLoader = new BuiltInDeclarationLoader( state, new List <ICustomDeclarationLoader> { new DebugDeclarations(state), new SpecialFormDeclarations(state), new FormEventDeclarations(state), new AliasDeclarations(state), }); var parseRunner = new SynchronousParseRunner( state, parserStateManager, preprocessorFactory, attributeParser, exporter); var declarationResolveRunner = new SynchronousDeclarationResolveRunner( state, parserStateManager, comSynchronizer); var referenceResolveRunner = new SynchronousReferenceResolveRunner( state, parserStateManager, moduleToModuleReferenceManager, referenceRemover); var parsingStageService = new ParsingStageService( comSynchronizer, builtInDeclarationLoader, parseRunner, declarationResolveRunner, referenceResolveRunner ); var parsingCacheService = new ParsingCacheService( state, moduleToModuleReferenceManager, referenceRemover, supertypeClearer ); return(new ParseCoordinator( state, parsingStageService, parsingCacheService, projectManager, parserStateManager, true)); }
public static ConfiguredParserResult CreateConfiguredParser(this IVBE vbe, string serializedDeclarationsPath = null) { var state = new RubberduckParserState(vbe, new ConcurrentlyConstructedDeclarationFinderFactory()); var moduleToModuleReferenceManager = new ModuleToModuleReferenceManager(); var parserStateManager = new SynchronousParserStateManager(state); var referenceRemover = new SynchronousReferenceRemover(state, moduleToModuleReferenceManager); var supertypeClearer = new SupertypeClearer(state); var comSynchronizer = new SynchronousCOMReferenceSynchronizer(state, parserStateManager, @"C:\"); var parseRunner = new SynchronousParseRunner(state, parserStateManager, () => new VBAPreprocessor(double.Parse(vbe.Version, CultureInfo.InvariantCulture)), new AttributeParser(), new ModuleExporter()); var declarationResolveRunner = new SynchronousDeclarationResolveRunner(state, parserStateManager, comSynchronizer); var referenceResolveRunner = new SynchronousReferenceResolveRunner(state, parserStateManager, moduleToModuleReferenceManager, referenceRemover); var parsingCacheService = new ParsingCacheService(state, moduleToModuleReferenceManager, referenceRemover, supertypeClearer); var parsingStageService = new ParsingStageService(comSynchronizer, new BuiltInDeclarationLoader(state, new List <ICustomDeclarationLoader> { new DebugDeclarations(state), new SpecialFormDeclarations(state), new FormEventDeclarations(state), new AliasDeclarations(state) }), parseRunner, declarationResolveRunner, referenceResolveRunner); IProjectManager projectManager = new SynchronousProjectManager(state, vbe); var parser = new ParseCoordinator(state, parsingStageService, parsingCacheService, projectManager, parserStateManager, true); return(new ConfiguredParserResult { ParseCoordinator = parser, ProjectManager = projectManager }); }