Antlr4.Runtime.Atn.ProfilingATNSimulator.AdaptivePredict C# (CSharp) Method

AdaptivePredict() public method

public AdaptivePredict ( ITokenStream input, int decision, ParserRuleContext outerContext ) : int
input ITokenStream
decision int
outerContext ParserRuleContext
return int
        public override int AdaptivePredict(ITokenStream input, int decision, ParserRuleContext outerContext)
        {
            try
            {
            this.sllStopIndex = -1;
            this.llStopIndex = -1;
            this.currentDecision = decision;
                long start = DateTime.Now.ToFileTime(); // expensive but useful info
            int alt = base.AdaptivePredict(input, decision, outerContext);
            long stop = DateTime.Now.ToFileTime();
            decisions[decision].timeInPrediction += (stop - start);
            decisions[decision].invocations++;

            int SLL_k = sllStopIndex - startIndex + 1;
            decisions[decision].SLL_TotalLook += SLL_k;
            decisions[decision].SLL_MinLook = decisions[decision].SLL_MinLook == 0 ? SLL_k : Math.Min(decisions[decision].SLL_MinLook, SLL_k);
            if (SLL_k > decisions[decision].SLL_MaxLook)
            {
                decisions[decision].SLL_MaxLook = SLL_k;
                decisions[decision].SLL_MaxLookEvent =
                        new LookaheadEventInfo(decision, null/*, alt*/, input, startIndex, sllStopIndex, false);
            }

            if (llStopIndex >= 0)
            {
                int LL_k = llStopIndex - startIndex + 1;
                decisions[decision].LL_TotalLook += LL_k;
                decisions[decision].LL_MinLook = decisions[decision].LL_MinLook == 0 ? LL_k : Math.Min(decisions[decision].LL_MinLook, LL_k);
                if (LL_k > decisions[decision].LL_MaxLook)
                {
                    decisions[decision].LL_MaxLook = LL_k;
                    decisions[decision].LL_MaxLookEvent =
                            new LookaheadEventInfo(decision, null/*, alt*/, input, startIndex, llStopIndex, true);
                }
            }

            return alt;
            }
            finally
            {
            this.currentDecision = -1;
            }
        }