コード例 #1
0
        public void AddParseTree(QualifiedModuleName module, IParseTree parseTree, ParsePass pass = ParsePass.CodePanePass)
        {
            var key = module;

            _moduleStates[key].SetParseTree(parseTree, pass);
            _moduleStates[key].SetModuleContentHashCode(key.ContentHashCode);
        }
コード例 #2
0
        public IParseTree GetParseTree(QualifiedModuleName module, ParsePass pass = ParsePass.CodePanePass)
        {
            switch (pass)
            {
            case ParsePass.AttributesPass:
                return(_moduleStates[module].AttributesPassParseTree);

            case ParsePass.CodePanePass:
                return(_moduleStates[module].ParseTree);

            default:
                throw new ArgumentOutOfRangeException(nameof(pass), pass, null);
            }
        }
コード例 #3
0
ファイル: ModuleState.cs プロジェクト: xxxmen/Rubberduck
        public ModuleState SetParseTree(IParseTree parseTree, ParsePass pass)
        {
            switch (pass)
            {
            case ParsePass.AttributesPass:
                AttributesPassParseTree = parseTree;
                break;

            case ParsePass.CodePanePass:
                ParseTree = parseTree;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(pass), pass, null);
            }
            return(this);
        }
コード例 #4
0
 public ParsePassExceptionErrorListener(string componentName, ParsePass parsePass)
 {
     ComponentName = componentName;
     ParsePass     = parsePass;
 }
コード例 #5
0
            private void WalkTrees(CodeInspectionSettings settings, RubberduckParserState state, IEnumerable <IParseTreeInspection> inspections, ParsePass pass)
            {
                var listeners = inspections
                                .Where(i => i.Severity != CodeInspectionSeverity.DoNotShow &&
                                       i.Pass == pass &&
                                       !IsDisabled(settings, i))
                                .Select(inspection => inspection.Listener)
                                .ToList();

                if (!listeners.Any())
                {
                    return;
                }

                List <KeyValuePair <QualifiedModuleName, IParseTree> > trees;

                switch (pass)
                {
                case ParsePass.AttributesPass:
                    trees = state.AttributeParseTrees;
                    break;

                case ParsePass.CodePanePass:
                    trees = state.ParseTrees;
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(pass), pass, null);
                }

                foreach (var componentTreePair in trees)
                {
                    foreach (var listener in listeners)
                    {
                        listener.CurrentModuleName = componentTreePair.Key;
                    }

                    ParseTreeWalker.Default.Walk(new CombinedParseTreeListener(listeners), componentTreePair.Value);
                }
            }
コード例 #6
0
 public ParsePassSyntaxErrorException(string message, RecognitionException innerException, IToken offendingSymbol, int line, int position, string componentName, ParsePass parsePass)
     : base(message, innerException, offendingSymbol, line, position)
 {
     ComponentName = componentName;
     ParsePass     = parsePass;
 }
コード例 #7
0
 public PreprocessorSyntaxErrorException(string message, RecognitionException innerException, IToken offendingSymbol, int line, int position, string componentName, ParsePass parsePass)
     : base(message, innerException, offendingSymbol, line, position, componentName, parsePass)
 {
 }
コード例 #8
0
 public MainParseExceptionErrorListener(string componentName, ParsePass parsePass)
     : base(componentName, parsePass)
 {
 }
コード例 #9
0
 public PreprocessorExceptionErrorListener(string componentName, ParsePass parsePass)
     : base(componentName, parsePass)
 {
 }