コード例 #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
        protected ParseRunnerBase(
            RubberduckParserState state,
            IParserStateManager parserStateManager,
            Func <IVBAPreprocessor> preprocessorFactory,
            IAttributeParser attributeParser,
            IModuleExporter exporter)
        {
            if (state == null)
            {
                throw new ArgumentNullException(nameof(state));
            }
            if (parserStateManager == null)
            {
                throw new ArgumentNullException(nameof(parserStateManager));
            }
            if (preprocessorFactory == null)
            {
                throw new ArgumentNullException(nameof(preprocessorFactory));
            }
            if (attributeParser == null)
            {
                throw new ArgumentNullException(nameof(attributeParser));
            }

            _state               = state;
            StateManager         = parserStateManager;
            _preprocessorFactory = preprocessorFactory;
            _attributeParser     = attributeParser;
            _exporter            = exporter;
        }
コード例 #3
0
ファイル: MockParser.cs プロジェクト: vaginessa/Rubberduck
 public static RubberduckParser Create(VBE vbe, RubberduckParserState state, IAttributeParser attributeParser)
 {
     return(new RubberduckParser(vbe, state, attributeParser,
                                 () => new VBAPreprocessor(double.Parse(vbe.Version, CultureInfo.InvariantCulture)),
                                 new List <ICustomDeclarationLoader> {
         new DebugDeclarations(state), new FormEventDeclarations(state), new AliasDeclarations(state)
     }, true));
 }
コード例 #4
0
 public ComponentParseTask(VBComponent vbComponent, VBAPreprocessor preprocessor, IAttributeParser attributeParser, TokenStreamRewriter rewriter = null)
 {
     _attributeParser = attributeParser;
     _preprocessor = preprocessor;
     _component = vbComponent;
     _rewriter = rewriter;
     _qualifiedName = new QualifiedModuleName(vbComponent); 
 }
コード例 #5
0
 public ComponentParseTask(VBComponent vbComponent, VBAPreprocessor preprocessor, IAttributeParser attributeParser, TokenStreamRewriter rewriter = null)
 {
     _attributeParser = attributeParser;
     _preprocessor    = preprocessor;
     _component       = vbComponent;
     _rewriter        = rewriter;
     _qualifiedName   = new QualifiedModuleName(vbComponent);
 }
コード例 #6
0
        public ComponentParseTask(IVBComponent vbComponent, IVBAPreprocessor preprocessor, IAttributeParser attributeParser, TokenStreamRewriter rewriter = null)
        {
            _taskId = Guid.NewGuid();

            _attributeParser = attributeParser;
            _preprocessor    = preprocessor;
            _component       = vbComponent;
            _rewriter        = rewriter;
            _qualifiedName   = new QualifiedModuleName(vbComponent);
            _parser          = new VBAModuleParser();
        }
コード例 #7
0
        public ComponentParseTask(QualifiedModuleName module, IVBAPreprocessor preprocessor, IAttributeParser attributeParser, IModuleExporter exporter, TokenStreamRewriter rewriter = null)
        {
            _taskId = Guid.NewGuid();

            _attributeParser = attributeParser;
            _exporter        = exporter;
            _preprocessor    = preprocessor;
            _module          = module;
            _rewriter        = rewriter;
            _parser          = new VBAModuleParser();
        }
コード例 #8
0
        public RubberduckParser(VBE vbe, RubberduckParserState state, IAttributeParser attributeParser)
        {
            _resolverTokenSource = CancellationTokenSource.CreateLinkedTokenSource(_central.Token);
            _vbe = vbe;
            _state = state;
            _attributeParser = attributeParser;

            _comReflector = new ReferencedDeclarationsCollector();

            state.ParseRequest += ReparseRequested;
            state.StateChanged += StateOnStateChanged;
        }
コード例 #9
0
        public RubberduckParser(VBE vbe, RubberduckParserState state, IAttributeParser attributeParser)
        {
            _resolverTokenSource = CancellationTokenSource.CreateLinkedTokenSource(_central.Token);
            _vbe             = vbe;
            _state           = state;
            _attributeParser = attributeParser;

            _comReflector = new ReferencedDeclarationsCollector();

            state.ParseRequest += ReparseRequested;
            state.StateChanged += StateOnStateChanged;
        }
コード例 #10
0
 public SynchronousParseRunner(
     RubberduckParserState state,
     IParserStateManager parserStateManager,
     Func <IVBAPreprocessor> preprocessorFactory,
     IAttributeParser attributeParser,
     IModuleExporter exporter)
     : base(state,
            parserStateManager,
            preprocessorFactory,
            attributeParser,
            exporter)
 {
 }
コード例 #11
0
ファイル: MockParser.cs プロジェクト: shairad/Rubberduck
        public static ParseCoordinator Create(IVBE vbe, RubberduckParserState state, IAttributeParser attributeParser, string serializedDeclarationsPath = null)
        {
            var path = serializedDeclarationsPath ??
                       Path.Combine(Path.GetDirectoryName(Assembly.GetAssembly(typeof(MockParser)).Location), "TestFiles", "Resolver");

            return(new ParseCoordinator(vbe, state, attributeParser,
                                        () => new VBAPreprocessor(double.Parse(vbe.Version, CultureInfo.InvariantCulture)),
                                        new List <ICustomDeclarationLoader>
            {
                new DebugDeclarations(state),
                new SpecialFormDeclarations(state),
                new FormEventDeclarations(state),
                new AliasDeclarations(state),
            }, true, path));
        }
コード例 #12
0
        public RubberduckParser(
            VBE vbe,
            RubberduckParserState state,
            IAttributeParser attributeParser,
            Func <IVBAPreprocessor> preprocessorFactory)
        {
            _resolverTokenSource = CancellationTokenSource.CreateLinkedTokenSource(_central.Token);
            _vbe                 = vbe;
            _state               = state;
            _attributeParser     = attributeParser;
            _preprocessorFactory = preprocessorFactory;

            _comReflector = new ReferencedDeclarationsCollector(_state);

            state.ParseRequest += ReparseRequested;
        }
コード例 #13
0
        public RubberduckParser(
            VBE vbe,
            RubberduckParserState state,
            IAttributeParser attributeParser,
            Func <IVBAPreprocessor> preprocessorFactory,
            IEnumerable <ICustomDeclarationLoader> customDeclarationLoaders,
            bool isTestScope = false)
        {
            _vbe                      = vbe;
            _state                    = state;
            _attributeParser          = attributeParser;
            _preprocessorFactory      = preprocessorFactory;
            _customDeclarationLoaders = customDeclarationLoaders;
            _isTestScope              = isTestScope;

            state.ParseRequest += ReparseRequested;
        }
コード例 #14
0
        public ParseCoordinator(
            IVBE vbe,
            RubberduckParserState state,
            IAttributeParser attributeParser,
            Func <IVBAPreprocessor> preprocessorFactory,
            IEnumerable <ICustomDeclarationLoader> customDeclarationLoaders,
            bool isTestScope = false,
            string serializedDeclarationsPath = null)
        {
            _vbe                        = vbe;
            _state                      = state;
            _attributeParser            = attributeParser;
            _preprocessorFactory        = preprocessorFactory;
            _customDeclarationLoaders   = customDeclarationLoaders;
            _isTestScope                = isTestScope;
            _serializedDeclarationsPath = serializedDeclarationsPath
                                          ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Rubberduck", "declarations");
            _hostApp = _vbe.HostApplication();

            state.ParseRequest += ReparseRequested;
        }
コード例 #15
0
    private static IElementParserSettings FakeSettings(params object[] parsers)
    {
        var settings = A.Dummy <IElementParserSettings>();

        var foundTextParser = false;

        foreach (var parser in parsers)
        {
            if (parser is INodeParser nodeParser)
            {
                INodeParser ignoredParser = null;
                A.CallTo(() => settings.ChildParsers.TryGet(nodeParser.Name, out ignoredParser))
                .Returns(true)
                .AssignsOutAndRefParameters(nodeParser);
            }
            else if (parser is IAttributeParser attributeParser)
            {
                IAttributeParser ignoredParser = null;
                A.CallTo(() => settings.AttributeParsers.TryGet(attributeParser.Name, out ignoredParser))
                .Returns(true)
                .AssignsOutAndRefParameters(attributeParser);
            }
            else if (parser is ITextParser textParser)
            {
                A.CallTo(() => settings.TextParser).Returns(textParser);
                foundTextParser = true;
            }
        }

        if (!foundTextParser)
        {
            A.CallTo(() => settings.TextParser).Returns(null);
        }

        return(settings);
    }
コード例 #16
0
        public void Parse <TReader>(IAttributeParser <TReader> parser, TReader reader) where TReader : IReader
        {
            IResultAttributeBuilder attributeBuilder = _createAttributeBuilder();
            IAttributeState         attributeState   = _createAttributeState(this, attributeBuilder);
            IState previousState = _activeState.ChangeState(attributeState);

            try
            {
                parser.Parse(reader, attributeState);
            }
            finally
            {
                _activeState.ChangeState(previousState);
            }

            // TODO: 'Name' must be set on 'attributeBuilder' !!

            if (!attributeState.Valid)
            {
                attributeBuilder.Invalidate();
            }

            _resultBuilder.AddAttribute(attributeBuilder.Build());
        }
コード例 #17
0
 public GroupOfPicturesHeader()
 {
     _timeCodeAttribute = new TimeCodeAttribute();
 }
コード例 #18
0
 public SystemClockReferenceAttribute()
 {
     _timeStampAttribute = new TimeStampAttribute <Attribute>(Attribute.SystemClockReference, true);
     _useSystemClockReferenceValidation = (bool)Mpeg2SystemDetector.Configurable[Mpeg2SystemDetector.ConfigurationKey.UseSystemClockReferenceValidation];
     _maxTimeGapSeconds = (double)Mpeg2SystemDetector.Configurable[Mpeg2SystemDetector.ConfigurationKey.MaxTimeGapSeconds];
 }
コード例 #19
0
 public static RubberduckParser Create(VBE vbe, RubberduckParserState state, IAttributeParser attributeParser)
 {
     return(new RubberduckParser(vbe, state, attributeParser));
 }
コード例 #20
0
ファイル: MockParser.cs プロジェクト: retailcoder/Rubberduck
 public static RubberduckParser Create(VBE vbe, RubberduckParserState state, IAttributeParser attributeParser)
 {
     return new RubberduckParser(vbe, state, attributeParser);
 }
コード例 #21
0
 public UserData()
 {
     _userDataAttribute = new UserDataAttribute();
 }
コード例 #22
0
 public CopyrightExtension()
 {
     _copyrightNumberAttribute = new CopyrightNumberAttribute();
 }
コード例 #23
0
 public void GetAttribute(IAttributeParser <IMpeg2SystemReader> parser)
 {
     Result.Parse(parser, this);
 }
コード例 #24
0
 public static void Add(this ParserDictionary <IAttributeParser> dic, IAttributeParser parser)
 => dic.Add(parser.ElementName, parser);
コード例 #25
0
ファイル: MockParser.cs プロジェクト: grleachman/Rubberduck
 public static RubberduckParser Create(VBE vbe, RubberduckParserState state, IAttributeParser attributeParser)
 {
     return(new RubberduckParser(vbe, state, attributeParser, () => new VBAPreprocessor(double.Parse(vbe.Version, CultureInfo.InvariantCulture))));
 }
コード例 #26
0
 public SystemHeader()
 {
     _streamInfoAttributeParser = new StreamInfoAttributeParser();
 }
コード例 #27
0
 public PackHeader()
 {
     _systemClockReferenceAttribute = new SystemClockReferenceAttribute();
 }