Antlr3.Analysis.DecisionProbe.IssueRecursionWarnings C# (CSharp) 메소드

IssueRecursionWarnings() 보호된 메소드

protected IssueRecursionWarnings ( ) : void
리턴 void
        protected virtual void IssueRecursionWarnings()
        {
            // RECURSION OVERFLOW
            ICollection<int> dfaStatesWithRecursionProblems =
                _stateToRecursionOverflowConfigurationsMap.Keys;
            // now walk truly unique (unaliased) list of dfa states with inf recur
            // Goal: create a map from alt to map<target,IList<callsites>>
            // Map<Map<String target, IList<NFAState call sites>>
            IDictionary<int, IDictionary<string, ICollection<NFAState>>> altToTargetToCallSitesMap =
                new Dictionary<int, IDictionary<string, ICollection<NFAState>>>();
            // track a single problem DFA state for each alt
            var altToDFAState = new Dictionary<int, DFAState>();
            ComputeAltToProblemMaps( dfaStatesWithRecursionProblems,
                                    _stateToRecursionOverflowConfigurationsMap,
                                    altToTargetToCallSitesMap, // output param
                                    altToDFAState );            // output param

            // walk each alt with recursion overflow problems and generate error
            ICollection<int> alts = altToTargetToCallSitesMap.Keys;
            List<int> sortedAlts = new List<int>( alts );
            sortedAlts.Sort();
            //Collections.sort( sortedAlts );
            foreach ( int altI in sortedAlts )
            {
                IDictionary<string, ICollection<NFAState>> targetToCallSiteMap;
                altToTargetToCallSitesMap.TryGetValue(altI, out targetToCallSiteMap);
                var targetRules = targetToCallSiteMap.Keys;
                var callSiteStates = targetToCallSiteMap.Values;
                DFAState sampleBadState;
                altToDFAState.TryGetValue(altI, out sampleBadState);
                ErrorManager.RecursionOverflow( this,
                                               sampleBadState,
                                               altI,
                                               targetRules,
                                               callSiteStates );
            }
        }