示例#1
0
        //public VbeEventCollectionModel Events { get; }

        public VbeModel(Microsoft.Vbe.Interop.VBE vbe)
        {
            Version         = vbe.Version;
            Windows         = new VbeWindowCollectionModel(vbe.Windows);
            Projects        = new VbeProjectCollectionModel(vbe.VBProjects);
            ActiveVBProject = new VbeProjectModel(vbe.ActiveVBProject);
            Addins          = new VbeAddinCollectionModel(vbe.Addins);
            MainWindow      = new VbeWindowModel(vbe.MainWindow);
            //Events = new VbeEventCollectionModel(vbe.Events);
        }
示例#2
0
        public void Initialize(Microsoft.Vbe.Interop.VBE vbe)
        {
            if (_parser != null)
            {
                throw new InvalidOperationException("ParserState is already initialized.");
            }

            _vbe   = new VBE(vbe);
            _state = new RubberduckParserState(null);
            _state.StateChanged += _state_StateChanged;

            Func <IVBAPreprocessor> preprocessorFactory = () => new VBAPreprocessor(double.Parse(_vbe.Version, CultureInfo.InvariantCulture));

            _attributeParser = new AttributeParser(new ModuleExporter(), preprocessorFactory);
            _parser          = new ParseCoordinator(_vbe, _state, _attributeParser, preprocessorFactory,
                                                    new List <ICustomDeclarationLoader>
            {
                new DebugDeclarations(_state),
                new SpecialFormDeclarations(_state),
                new FormEventDeclarations(_state),
                new AliasDeclarations(_state),
                //new RubberduckApiDeclarations(_state)
            });
        }
示例#3
0
        public void Initialize(Microsoft.Vbe.Interop.VBE vbe)
        {
            if (_parser != null)
            {
                throw new InvalidOperationException("ParserState is already initialized.");
            }

            _vbe       = new VBE(vbe);
            _vbeEvents = VBEEvents.Initialize(_vbe);
            var declarationFinderFactory = new ConcurrentlyConstructedDeclarationFinderFactory();
            var projectRepository        = new ProjectsRepository(_vbe);

            _state = new RubberduckParserState(null, projectRepository, declarationFinderFactory, _vbeEvents);
            _state.StateChanged += _state_StateChanged;

            var exporter = new ModuleExporter();

            Func <IVBAPreprocessor> preprocessorFactory = () => new VBAPreprocessor(double.Parse(_vbe.Version, CultureInfo.InvariantCulture));

            _attributeParser = new AttributeParser(exporter, preprocessorFactory, _state.ProjectsProvider);
            var projectManager = new RepositoryProjectManager(projectRepository);
            var moduleToModuleReferenceManager = new ModuleToModuleReferenceManager();
            var parserStateManager             = new ParserStateManager(_state);
            var referenceRemover         = new ReferenceRemover(_state, moduleToModuleReferenceManager);
            var supertypeClearer         = new SupertypeClearer(_state);
            var comSynchronizer          = new COMReferenceSynchronizer(_state, parserStateManager);
            var builtInDeclarationLoader = new BuiltInDeclarationLoader(
                _state,
                new List <ICustomDeclarationLoader>
            {
                new DebugDeclarations(_state),
                new SpecialFormDeclarations(_state),
                new FormEventDeclarations(_state),
                new AliasDeclarations(_state),
                //new RubberduckApiDeclarations(_state)
            }
                );
            var parseRunner = new ParseRunner(
                _state,
                parserStateManager,
                preprocessorFactory,
                _attributeParser,
                exporter);
            var declarationResolveRunner = new DeclarationResolveRunner(
                _state,
                parserStateManager,
                comSynchronizer);
            var referenceResolveRunner = new ReferenceResolveRunner(
                _state,
                parserStateManager,
                moduleToModuleReferenceManager,
                referenceRemover);
            var parsingStageService = new ParsingStageService(
                comSynchronizer,
                builtInDeclarationLoader,
                parseRunner,
                declarationResolveRunner,
                referenceResolveRunner
                );
            var parsingCacheService = new ParsingCacheService(
                _state,
                moduleToModuleReferenceManager,
                referenceRemover,
                supertypeClearer
                );

            _parser = new ParseCoordinator(
                _state,
                parsingStageService,
                parsingCacheService,
                projectManager,
                parserStateManager
                );
        }