示例#1
0
        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));
        }
示例#2
0
        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
            });
        }